Asp.net MVC 用户控件 ViewData

标签 asp.net asp.net-mvc viewdata viewusercontrol

当 Controller 渲染基于模型的 View 时,您可以使用索引器从 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") 

应该适合你。

关于Asp.net MVC 用户控件 ViewData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787/

相关文章:

c# - 更新后需要使行处于正常模式

javascript - 从 JavaScript POST 重新加载 Razor 页面

c# - 求一个ServiceStack/Razor的新手教程

asp.net - 如何将我的 Autofac 容器插入 ASP。网络身份2.1

c# - 使用 SessionStateBehavior.ReadOnly 写入 session 变量

c# - 如何制作一个消耗约 500 个 RSS 并在数据库中保存新项目的 Web 服务?

asp.net - 在同一域上的 IIS 应用程序之间共享身份验证

c# - ViewData 中的 HTML 标记呈现问题?另外,MVC 中的 MultiView 功能?

c# - 将 ViewData 传递给部分 View

asp.net-mvc - 我可以从 HttpContext 访问 ViewData 吗?