Asp.net Mvc areas routing issue

倾然丶 夕夏残阳落幕 提交于 2019-12-04 03:51:20

问题


I want default page of the site to be Login.cshtml. I get the Exception:

Error: The view 'LogIn' or its master was not found or no view engine supports the searched locations. The following locations were searched:

I have 2 areas. Structure is shown below.

My routeconfig is shown below.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace Portal.Web
{
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "LogIn", id =   UrlParameter.Optional },
            namespaces: new[] { "Portal.Web.Areas.Management" }
        );
    }
    }

}

My global.asax.cs is shown below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;

namespace Portal.Web
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode, 
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}
}

`Have you any advice?


回答1:


You forgot some stuff

Recap:

ManagementAreaRegistration.cs

public class ManagementAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Management";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Management_default",
            "Management/{controller}/{action}/{id}",
          new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        "Default" // Route name
        , "{controller}/{action}/{id}" // URL with parameters
        , new { area = "management", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        , new[] { "Portal.Web.Areas.Management.Controllers" } // Namespace of controllers in root area
    );
}   

You set Portal.Web.Areas.Management when it should be Portal.Web.Areas.Management.Controllers also it is missing the default area: area = "management"




回答2:


It looks as though you need to change your namespace on the MapRoute from:

Portal.Web.Areas.Management

To:

Portal.Web.Areas.Management.Controllers



回答3:


Clear out your bin folder and rebuild. There is a chance there is an old dll set up with the old routing. This worked for me for one route at least.




回答4:


I followed instruction in this post. And problem is resolved. Visit ASP.NET MVC Default URL View

Thank you all.



来源:https://stackoverflow.com/questions/17680772/asp-net-mvc-areas-routing-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!