2013-10-03 50 views
0

我在MVC中創建了一個區域,然後我創建了一個簡單的控制器,我無法查看該區域或我網站的該部分中的任何頁面是否有人知道爲什麼以及如何解決此問題。我用Area創建了一個項目,並且沒有問題,我不知道發生了什麼變化,或者如果我必須改變某些內容才能使其工作,有人可以幫我解決問題。區域中找不到資源

某處它沒有被註冊。

namespace RedPlanet.Areas.admin.Controllers 
{ 
    public class CategoryController : Controller 
    { 
    } 
} 

地區:

public class adminAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "admin"; 
     } 
    } 

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

全球ASAX:

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     WebApiConfig.Register(GlobalConfiguration.Configuration); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     AuthConfig.RegisterAuth(); 

     System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<DataContext>()); 
    } 
} 
+0

顯示控制器代碼(包括命名空間) – Igor

+0

這可能幫助你[http://stackoverflow.com/questions/15616240/mvc-area-routing](http://stackoverflow.com/questions/15616240/ mvc-area-routing) –

+0

你的控制器有任何操作嗎?您也不要在您的區域路線中定義默認控制器。 – GvM

回答

0

你需要指定命名空間註冊路線在你申請你的管理區和主要路線時。

主要路線:

routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new string[] { "RedPlanet.Controllers" }// specify the namespace 
); 

在您的\區\ ADMIN \ adminAreaRegistration.cs文件,你需要修改RegisterArea()方法如下:

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "admin_default", 
     "admin/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional }, 
     new[] { "RedPlanet.Areas.admin.Controllers" }// specify the namespace 
    ); 
} 

更新:
如果您使用Guid,則應將您的操作方法的參數類型更改爲Guid:

public ActionResult Details(Guid guid) 
{ 
    //code 
    return View(model); 
} 

然後爲此創建新路線;

routes.MapRoute("FooRouteName", 
     "Controller/Action/{guidParam}", 
     new { controller = "Category", action = "Index" }, 
     new { guidParam = @"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$" } 
    ); 
+0

我複製並粘貼了你的代碼並將第二組代碼添加到第二組代碼中,並且我仍然沒有任何東西 – ONYX

+0

您能否顯示出現錯誤? –

+0

這是一個空白的紅色asp.net資源頁面的錯誤頁面。它'說資源沒有找到 – ONYX