加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在不同的控制器中管理MVC区域和RenderAction

发布时间:2020-12-15 19:15:13 所属栏目:asp.Net 来源:网络整理
导读:我刚刚添加了一个新的管理区域到我的项目,因为它开始变得相当大,我想保持结构。 我有一个_ViewStart.cshtml视图,设置共享布局页面包括菜单和部分与一些用户信息。因为这没有被添加在我的区域页面上,我已经将_ViewStart文件添加到我的区域。 此文件将布局
我刚刚添加了一个新的管理区域到我的项目,因为它开始变得相当大,我想保持结构。

我有一个_ViewStart.cshtml视图,设置共享布局页面包括菜单和部分与一些用户信息。因为这没有被添加在我的区域页面上,我已经将_ViewStart文件添加到我的区域。

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

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 = "" });

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读