我有一个部分 View ,只有一行名为 Messages.ascx
的行,位于 ~/Views/Shared/Messages.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<h2><%:ViewBag.MyMessage.ToString() %></h2>
部分 View 的 Controller 如下
public ActionResult Messages()
{
ViewBag.MyMessage = "This is my Partial Message";
return PartialView();
}
我只需要在位于~/Views/Home/Index.aspx
的index.asp 页面中添加此部分 View 。我添加了部分 View ,如下
<%: Html.Partial("Messages") %>
但是,当我编译并运行时,我的浏览器上收到以下消息
Cannot perform runtime binding on a null reference
Line 1: <%@ Control Language="C#"> Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> Line 2: Line 3: <h2><%:ViewBag.MyMessage.ToString() %></h2>
请帮助我如何将部分 View 添加到我的主视图中。
最佳答案
当你这样做时
<%: Html.Partial("Messages") %>
~/Views/Shared/Messages.ascx
的内容将被渲染,但下面的 Controller 操作方法将不会被执行
public ActionResult Messages()
{
ViewBag.MyMessage = "This is my Partial Message";
return PartialView();
}
so ViewBag.MyMessage
为 null,并且由于此语法而出现错误
<h2><%:ViewBag.MyMessage.ToString() %></h2>
您需要在 View 中使用 Html.Action
方法执行 Controller 操作方法。由于 Controller 类是 MessagesController
,因此更改此语法
<%: Html.Partial("Messages") %>
到此
<%: Html.Action("Messages", "Messages") %>
关于c# - 如何将带有自己的 Controller 的部分 View 添加到 asp.net mvc 4 中的另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727589/