2013-07-16 173 views
4

我想讓該網站的默認頁面爲Login.cshtml。我得到例外:Asp.net Mvc區域路由問題

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

我有2個領域。結構如下所示。

enter image description here

我routeconfig如下所示。

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" } 
     ); 
    } 
    } 

} 

我的global.asax.cs如下圖所示:

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); 
    } 
} 
} 

`你有什麼建議嗎?

回答

-5

我跟着這個帖子的指令。問題解決了。訪問ASP.NET MVC Default URL View

謝謝大家。

+0

該網址沒有明確的答案。你最終做了什麼?默認:new {area =「management」,controller =「Home」,action =「LogIn」將默認值更改爲:{controller =「Home」,action =「LogIn」,id = UrlParameter.Optional} 「,id = UrlParameter.Optional}''? – Robert

+0

沒有任何直接解決方案的鏈接,這對任何人都不值得。 – Syska

+0

我有同樣的問題,我解決了我的問題,解決我的Web應用程序的命名空間。我將我的控制器從無區域移動到管理區域,並且沒有工作,當我調整它所有類的名稱空間時 – renefc3

1

看起來好像你需要從上MapRoute改變你的命名空間:

Portal.Web.Areas.Management 

要:

Portal.Web.Areas.Management.Controllers 
+0

我試過了,但仍然是相同的錯誤 – fuat

+0

這項工作形成我感謝的 – renefc3

7

你忘記一些東西

回顧:

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 
    ); 
} 

您設置Portal.Web.Areas.Management當它應該是Portal.Web.Areas.Management.Controllers也是它缺少默認領域:area = "management"

+0

謝謝你的回答。但它沒有工作。 – fuat

+0

它也不適用於我。 – FrenkyB

-1

清除bin文件夾並重建。有一箇舊的dll設置與舊的路由的機會。這對我來說至少適用於一條路線。