局部 View 的 Controller 如下 pub-6ren">
gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:33 24 4
gpt4 key购买 nike

我有一个局部 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 action方法不会被执行

public ActionResult Messages()
{
ViewBag.MyMessage = "This is my Partial Message";
return PartialView();
}

所以 ViewBag.MyMessage 是空的,你因为这个语法得到了错误

<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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com