【发布时间】:2010-09-06 08:03:42
【问题描述】:
当控制器基于模型呈现视图时,您可以使用索引器从 ViewData 集合中获取属性(即 ViewData["Property"])。但是,我有一个共享用户控件,我尝试使用以下方法调用它:
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(即 ViewData["DisplayMessage"])集合中而不需要强类型化用户控件?这是设计使然吗? ViewData 包含“DisplayMessage”的键是否有意义?
【问题讨论】:
标签: asp.net asp.net-mvc viewdata viewusercontrol