代码之家  ›  专栏  ›  技术社区  ›  Ryan Eastabrook

ASP.NET MVC用户控件视图数据

  •  5
  • Ryan Eastabrook  · 技术社区  · 16 年前

    当控制器基于模型呈现视图时,可以使用索引器从ViewData集合中获取属性(即,ViewData[“属性”])。但是,我有一个共享用户控件,我尝试使用以下方法调用它:

    return View("Message", new { DisplayMessage = "This is a test" });
    

    在我的信息控制中,我有:

    <%= ViewData["DisplayMessage"] %>
    

    我认为这将正确地呈现displaymessage,但是,正在返回空值。经过大量的修改之后,我终于创建了一个“messagedata”类,以便强输入我的用户控件:

    public class MessageControl : ViewUserControl<MessageData>
    

    现在这个电话开始工作了:

    return View("Message", new MessageData() { DisplayMessage = "This is a test" });
    

    可以这样显示:

    <%= ViewData.Model.DisplayMessage %>
    

    为什么不在不强类型用户控件的情况下将DisplayMessage属性添加到ViewData(即,ViewData[“DisplayMessage”])集合中?这是设计的吗?viewdata是否包含“displaymessage”的键?

    2 回复  |  直到 11 年前
        1
  •  6
  •   Robotnik    11 年前

    方法

    ViewData.Eval("DisplayMessage") 
    

    应该为你工作。

        2
  •  2
  •   Ryan Eastabrook    16 年前

    当然,在我创建这个问题之后,我会在谷歌上再搜索几次后立即找到答案。

    http://forums.asp.net/t/1197059.aspx

    显然,这是因为包装类。即使如此,在默认情况下,传递的任何属性都应该添加到ViewData集合中。

    我真的需要停止回答我自己的问题:(

    推荐文章