【问题标题】:Render Action from area in layout page of mvc从 mvc 布局页面中的区域渲染动作
【发布时间】:2017-01-23 15:31:25
【问题描述】:

我想通过此代码在我的主 MVC 项目的布局页面中渲染我的区域(名为菜单)的 Index() 操作

并在这一行布局上出现错误

@{Html.RenderAction("Index", "Menu", new { area = "" }); }

执行处理程序“System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper”的子请求时出错。

这是我的AreaRegistration代码,仅供参考:

        public override string AreaName
    {
        get
        {
            return "Menu";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Menu_default",
            "Menu/{controller}/{action}/{id}",
            new { controller = "Menu", action = "Index", id = UrlParameter.Optional },
            new string[] { "Menu.Controllers" }
        );

    }

如您所见,我的控制器名称是 Menu

已编辑:我的问题的主要原因是这个...我所在区域的索引操作无法返回他的视图...我在索引操作中设置了一个断点,内部设置了一个断点索引视图的...并且程序正在到达并停止在第一个,但永远不会在第二个停止! ... 所以 主要问题是这个...我所在区域的索引操作不返回索引视图..

【问题讨论】:

  • 您在菜单区域,并且您没有在 Html.RenderAction 中指定任何区域:new { area = "Menu" });
  • @LaurentLequenne 我想在我的主要项目布局页面中呈现动作......如果我指定区域名称。它带来了另一个逻辑错误......因为呈现的动作(在布局内)不应该有父页面......

标签: asp.net-mvc asp.net-mvc-5 asp.net-mvc-areas


【解决方案1】:

试试这个

  @Html.Action("Index", "Menu")

【讨论】:

    【解决方案2】:

    我解决了。实际上,做这件事的唯一解决方案是使用带有直接路径的RenderPartial

     @{ Html.RenderPartial("~/Areas/Menu/Views/Menu/Index.cshtml");}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多