ASP.NET MVC默认URL视图

时间:2010-01-05 14:39:25

标签: asp.net asp.net-mvc web-config asp.net-mvc-routing url-routing

我正在尝试将我的MVC应用程序的默认URL设置为我的应用程序区域内的视图。该区域称为“普通”,控制器“主页”和视图“索引”。

我已尝试将web.config的表单部分中的defaultUrl设置为“〜/ Common / Home / Index ”,但没有成功。

我还尝试在global.asax中映射新路由,因此:

routes.MapRoute(
        "Area",
        "{area}/{controller}/{action}/{id}",
        new { area = "Common", controller = "Home", action = "Index", id = "" }
    );

再次,无济于事。

4 个答案:

答案 0 :(得分:13)

您列出的路线只有在明确输入网址时才有效:

yoursite.com/{area}/{controller}/{action}/{id}

该路线说的是:

如果我的请求具有有效{area},该区域中的有效{controller}以及该控制器中的有效{action},请将其路由到那里。

如果他们只是访问您的网站yoursite.com

,您希望默认使用该控制器
routes.MapRoute(
    "Area",
    "",
    new { area = "Common", controller = "Home", action = "Index" }
);

这说明如果他们没有向http://yoursite.com添加任何内容,那么就将其路由到以下操作:Common/Home/Index

另外,将它放在路线表的顶部。

确保您也让MVC知道您在应用程序中注册的区域:

将以下内容放入Application_Start文件的Global.asax.cs方法中:

AreaRegistration.RegisterAllAreas();

答案 1 :(得分:7)

你要做的是:

  • 从global.asax.cs中删除默认路由

    //// default route map will be create under area
    //routes.MapRoute(
    //    name: "Default",
    //    url: "{controller}/{action}/{id}",
    //    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    //);
    
  • 在Common Common

  • 区域更新SecurityAreaRegistration.cs
  • 添加以下路线映射:

     context.MapRoute(
        "Default",
        "",
        new { controller = "Home", action = "Index", id = "" }
    );
    

答案 2 :(得分:0)

你所做的似乎是正确的。如果我不得不猜测,由于您运行网站的方式,我会说这种情况正在发生。在Visual Studio中,如果在按F5时选择了特定视图,则该视图将成为起始URL - 尝试选择项目然后点击F5?

答案 3 :(得分:0)

在Global.asax中 删除.MapRoute

并使其看起来像

public static void RegisterRoutes(RouteCollection routes)
{
   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
}

然后在该区域的yourareaAreaRegistration.cs下(如果您通过VS添加区域,则在那里)

public override void RegisterArea(AreaRegistrationContext context)
{
     //This is the key one         
     context.MapRoute("Root", "", new { controller = "Home", action = "Login" });

     //Add more MapRoutes if needed
}