c# - 如何将带有自己的 Controller 的部分 View 添加到 asp.net mvc 4 中的另一个 View

标签 c# asp.net-mvc

我有一个部分 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/

相关文章:

javascript - 切换背景图像 MVC

javascript - Jquery 在离开页面之前未保存更改警报

c# - ManageUserViewModel 类在哪里?

c# - 我不断收到相同的错误, “CS1525: Unexpected symbol ` string'。我只是找不到我出错的地方

c# - 自定义 View 引擎与自定义操作结果

c# - 如何制作固定的十六进制编辑器?

c# - 如何使用 ASP.NET 设置数据属性?

asp.net-mvc - ASP.NET MVC 路由 - 无限变量树

c# - 基于其他程序集类生成源代码(c#源代码生成器)

c# - 使用动态生成的类型创建通用类的对象