当控制器基于模型渲染视图时,您可以使用索引器从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”的键是否有意义?

最佳答案

方法

ViewData.Eval("DisplayMessage")


应该为您工作。

08-03 23:13