ASP.NET MVC Default URL View

后端 未结 4 1903
孤独总比滥情好
孤独总比滥情好 2020-12-15 23:06

I\'m trying to set the Default URL of my MVC application to a view within an area of my application. The area is called \"Common\", the controller \"

相关标签:
4条回答
  • 2020-12-15 23:26

    What you're doing seems correct. If I had to guess I would say this is happening due to the way you are running your website. In Visual Studio, if you have a specific view selected when you hit F5 that view will be the starting Url - try selecting the Project and then hitting F5?

    0 讨论(0)
  • 2020-12-15 23:36

    The route you listed only works if they explicitly type out the URL:

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

    What that route says is:

    If I get a request that has a valid {area}, a valid {controller} in that area, and a valid {action} in that controller, then route it there.

    What you want is to default to that controller if they just visit your site, yoursite.com:

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

    What this says is that if they don't append anything to http://yoursite.com then to route it to the following action: Common/Home/Index

    Also, put it at the top of your routes table.

    Makes sure you're also letting MVC know to register the areas you have in the application:

    Put the following in your Application_Start method in the Global.asax.cs file:

    AreaRegistration.RegisterAllAreas();
    
    0 讨论(0)
  • 2020-12-15 23:44

    What you have to do is:

    • Remove Default Route from 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 }
      //);
      
    • Update SecurityAreaRegistration.cs in area Common

    • Add following route mapping:

       context.MapRoute(
          "Default",
          "",
          new { controller = "Home", action = "Index", id = "" }
      );
      
    0 讨论(0)
  • 2020-12-15 23:48

    In the Global.asax delete the .MapRoute

    and make it look like

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

    then under the area's yourareaAreaRegistration.cs (its there if you added the area through 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
    }
    
    0 讨论(0)
提交回复
热议问题