当控制器根据模型呈现视图时,您可以使用索引器(即ViewData [“Property”])从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 %>
为什么不给ViewData(即ViewData [“DisplayMessage”])集合添加DisplayMessage属性,而不强制对用户控件进行类型定义?这是设计如此吗?ViewData中包含“DisplayMessage”键似乎很合理?