我刚刚为我的项目添加了一个新的管理区域,因为它开始变得非常大,我希望保持结构化。
我有一个_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区域,它似乎没有此控制器的范围。
任何想法如何解决这个问题?
答案 0 :(得分:58)
您可以将区域指定为RouteValueDictionary(或路径值的对象)的一部分,RenderAction将其作为您案例中的第三个参数:
Html.RenderAction("UserInfo", "Account", new { area = "" });
这假设帐户控制器位于根区域。
答案 1 :(得分:0)
如果需要,可以通过传递参数值来使用 @ Html.Action 呈现部分视图。
@Html.Action("ActionName", "ControolerName", new { firstParam = "a", SecondParam = "b",.... })