当控制器根据模型呈现视图时,可以使用索引器(即ViewData [“Property”])从ViewData集合中获取属性。但是,我有我尝试使用调用下面的一个共享的用户控件:Asp.net MVC用户控件ViewData
return View("Message", new { DisplayMessage = "This is a test" });
,并在我的消息控件我有这样的:
<%= ViewData["DisplayMessage"] %>
我认为这会正确地呈现DisplayMessage,但是,返回null。摆弄周围的大剂量后,我终于以创建“MessageData”级强烈输入我的用户控件:
public class MessageControl : ViewUserControl<MessageData>
现在这个调用工作:
return View("Message", new MessageData() { DisplayMessage = "This is a test" });
并且可以显示像这样的:
<%= ViewData.Model.DisplayMessage %>
为什么不DisplayMessage属性添加到的ViewData(即计算机[“DisplayMessage”。)收集不强类型用户控件?这是设计吗? ViewData是否包含“DisplayMessage”的键是否有意义?