C# 在ASP.Net MVC 5中找不到区域视图
新项目无法找到新区域的视图 它正试图在父视图文件夹中找到它 建议的解决方案是将C# 在ASP.Net MVC 5中找不到区域视图,c#,.net,asp.net-mvc-5,asp.net-mvc-areas,C#,.net,Asp.net Mvc 5,Asp.net Mvc Areas,新项目无法找到新区域的视图 它正试图在父视图文件夹中找到它 建议的解决方案是将.DataTokens.Add(“area”、“AREANAME”)放入RegisterArea方法 public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Test_default", "Tes
.DataTokens.Add(“area”、“AREANAME”)
放入RegisterArea
方法
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Test_default",
"Test/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
).DataTokens.Add("area", "Test");
}
但是,通过此操作,我得到了一个“已添加具有相同密钥的项”错误
更新1:我没有在控制器上做任何花哨的事情
public ActionResult Index()
{
return View();
}
更新2:我只想补充一点,我还将组件注册到Unity容器中。不过,我认为这不会引起问题,因为它明确表示不需要注册我的控制器。方法
注册区域
已经知道您位于名为测试的区域。使用函数DataTokens.Add(“区域”、“测试”)
声明第二次路由。这就是为什么会出现这个错误
视图的初始问题当然与路由设置无关。从控制器渲染视图时是否有自定义代码?我发现,如果您的路由声明不在“全部捕获”路由声明之上(通常是您指出的父视图),则每次都默认为父视图。尝试将路由声明移动到父级试图捕获的任何内容之上,这很可能是因为正在从命名空间搜索视图
YourNamespace.YourApplication.Controllers
相反,应该从名称空间(或者您定义的任何名称空间)查看它
在路线声明中添加以下内容
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Test_default",
"Test/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "YourNamespace.YourApplication.Areas.Test.Controllers" }
);
}
向我们显示您的控制器操作。我已在上面进行了更新,以显示我的控制器中没有任何特殊功能。区域的路由声明是从Area Registration调用的,它在my global.asax.cs中的RouteConfig之前调用。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Test_default",
"Test/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "YourNamespace.YourApplication.Areas.Test.Controllers" }
);
}