我有一个mvc项目,我添加了一个名为BEK的新区域 和BEKAreaRegistration.cs已创建。
public class BEKAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "BEK";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"BEK_default",
"BEK/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
我的global.asax文件如下:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("{*allAspx}", new { allAspx = @".*\.aspx(/.*)?" });
RouteTable.Routes.IgnoreRoute("{*allAsmx}", new { allAsmx = @".*\.asmx(/.*)?" });
RouteTable.Routes.IgnoreRoute("{*allAshx}", new { allAshx = @".*\.ashx(/.*)?" });
RouteTable.Routes.IgnoreRoute("Services/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("");
RouteTable.Routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
但是当我尝试去BEK / Home / Index页面时,我得到一个错误页面。我还应该做什么?
这是错误:
无法找到资源。描述:HTTP 404.资源 你正在寻找(或其中一个依赖)本来可以 删除,更改名称或暂时不可用。请 查看以下URL并确保拼写正确。
请求的网址:/ LMS_WEB_APP / BEK / Home
----------------------------------------------- ---------------------------------版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18213
答案 0 :(得分:0)
我认为问题在于,区域和应用程序中都有同名控制器。就像您在普通应用程序中有 Home Controller 一样,也在 AREA 中 并且,它导致相同控制器的重复声明。
这样做的方法是,指定控制器的NAMESPACE,如下所示:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"BEK_default",
"BEK/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new string[] { "MyAppName.Areas.BEK.Controllers" } // specify the new namespace
);
}
如果不是那种情况,请发布您收到的错误消息。
答案 1 :(得分:0)
添加BEK区域时。 MVC将为您创建这些。
Mvc不会创建任何控制器和操作和视图。
因此,您必须手动执行您要添加的控制器,操作和视图。
所以,现在你必须通过右键单击Controller和Add Controller来添加Controller。
添加控制器后。
您可以右键单击Action和Add View,如下所示添加View:
确定.... 因此,您需要控制器和操作和视图。
现在你可能必须解决我之前告诉过你的Controller Duplicacy,如果有的话。
快乐的结合......