我在我的网站中添加了一个名为blogging的区域,我创建了所有的东西,我只是尝试通过手动输入Url在浏览器中访问它,但我收到的错误如“/'应用程序中的服务器错误”。我附上了项目的代码和快照。 任何帮助,将不胜感激。
Global.asax中
public static void MyCustomRouting(RouteCollection coll)
{
coll.IgnoreRoute("{resource}.axd/{*pathInfo}");
coll.MapRoute("Default", "{controller}/{action}", new { controller = "Home", action = "Index" }, new[] { "Areas.Controllers" });
}
protected void Application_Start()
{
//RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
MyCustomRouting(RouteTable.Routes);
}
BloggingAreaRegistration.cs
using System.Web.Mvc;
namespace MVC_PageRouting.Areas.Blogging
{
public class BloggingAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "Blogging"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute("Blogging_default", "Blogging/{controller}/{action}/{id}", new {action="Index",UrlParameter.Optional });
}
}
}
文件夹结构:
错误:
答案 0 :(得分:2)
通过在UrlParameter.Optional前面添加“id =”来指定您的id参数是可选的
new {action="Index", id = UrlParameter.Optional }
答案 1 :(得分:1)
我敢打赌如果去了这个网址它会起作用:
http://localhost:51803/Blogging/BloggingHome/Index/0
原因是您错误地指定了MapRoute参数。你指定了这个:
new {action="Index", UrlParameter.Optional });
您忘记包含ID名称,因此MVC不知道您的意思。你想要这个:
new {action="Index", id=UrlParameter.Optional });
注意“id =”,这告诉MVC id是可选的。没有它,MVC不知道你的意思是UrlParameter.Optional,因此它需要id。由于您没有在网址中包含ID,因此未选择任何路由,因此发布了404。
答案 2 :(得分:0)
您可以更新您的区域注册并尝试吗?
context.MapRoute("Blogging_default", "Blogging/{controller}/{action}/{id}", new {controller = "BloggingHome",action="Index",UrlParameter.Optional });