我如何在不同的控制器中管理MVC区域和RenderAction?

我刚刚为我的项目添加了一个新的管理区域,因为它开始变得很大,我想保持它的结构。

我有一个_ViewStart.cshtml视图,它将共享布局页面设置为包含菜单和部分用户信息。 由于这并没有被添加到我的区域页面上,我也将_ViewStart文件添加到了我的区域。

该文件将布局设置为“〜/ Views / Shared / _Layout.cshtml”,它位于我的管理区域外。 然而,_Layout文件包含一个RenderAction()方法,它在控制器上调用一个Child action方法进行渲染。 问题在于该区域似乎没有该控制器的可见性,因此引发以下异常:

The controller for path '/Admin/LeadOrigin' was not found or does not implement IController.

它发生的地方在于:

Line 70:         <div id="logindisplay">
Line 71:             @{
Line 72:                 Html.RenderAction("UserInfo", "Account");              
Line 73:             }
Line 74:         </div>

上面的RenderAction()正常工作,因为Account控制器在视图的范围内,而在Admin区域,它似乎没有这个控制器的范围。

任何想法如何解决这个问题?


您可以将该区域指定为RouteValueDictionary(或路径值的唯一对象)的一部分,RenderAction将其作为您的案例中的第三个参数:

Html.RenderAction("UserInfo", "Account", new { area = "" });  

这是假设帐户控制器在根区域。

链接地址: http://www.djcxy.com/p/50941.html

上一篇: How do I manage MVC areas and RenderAction in different controllers?

下一篇: RenderAction needs to behave different depending on containing page