我有一个部分视图,只有一行名为Messages.ascx
,位于~/Views/Shared/Messages.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<h2><%:ViewBag.MyMessage.ToString() %></h2>
局部视图的控制器如下
public ActionResult Messages()
{
ViewBag.MyMessage = "This is my Partial Message";
return PartialView();
}
我只需要在我的index.asp页面中添加这个局部视图,该页面位于~/Views/Home/Index.aspx
。我添加了部分视图如下
<%: Html.Partial("Messages") %>
但是,当我编译并运行时,我在浏览器上收到以下消息
无法对空引用执行运行时绑定
Line 1: <%@ Control Language="C#"> Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> Line 2: Line 3: <h2><%:ViewBag.MyMessage.ToString() %></h2>
请帮助我如何将局部视图添加到主视图中。
答案 0 :(得分:2)
当你这样做时
<%: Html.Partial("Messages") %>
将呈现~/Views/Shared/Messages.ascx
的内容,但下面的控制器操作方法将不会被执行
public ActionResult Messages()
{
ViewBag.MyMessage = "This is my Partial Message";
return PartialView();
}
所以ViewBag.MyMessage
为空,因为这种语法而导致错误
<h2><%:ViewBag.MyMessage.ToString() %></h2>
您需要在视图中使用Html.Action
方法执行控制器操作方法。由于控制器类为MessagesController
,因此请更改此语法
<%: Html.Partial("Messages") %>
到这个
<%: Html.Action("Messages", "Messages") %>