2011-08-08 81 views
1

我有一個新的MVC3項目設置,我在我的控制器裏面添加了一個名爲「area1」的文件夾。試圖讓區域在MVC3中工作

然後我把我的文件夾命名爲abc.cs內部控制器:

public class abc : Controller 
{ 
     // 
     // GET: /abc/ 
    public ActionResult Index() 
    { 
     return Content("abc index"); 
    } 

} 


public class MyAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get { return "My Area"; } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "abc", 
      "area1/{controller}/{action}/{id}", 
      new { controller = "abc", action = "index", id = UrlParameter.Optional } 
      ); 

     // And so on ... 
    } 
} 

現在,當我去:

/area1/abc/index

我得到一個錯誤頁面。

The resource cannot be found. 

我在RegisterArea方法中放置了一個斷點,它不會被調用。

我在做什麼錯?

其他幾個問題:

  1. 我可以把我的文件夾的區域和項目控制器代碼的任何地方,或者它必須是主控制器文件夾內?

  2. 我可以在我的區域文件夾中有我的看法嗎?

回答

1

我不知道你所說的

意味着什麼,我將自己命名爲「區1」控制器內部的文件夾。

由於您的控制器是一個類,向它添加文件夾沒有意義。

的過程中創造一個區域是這樣的:

  1. 在Visual Studio中,右鍵單擊該項目的根,並選擇Add|Area

  2. 爲區域輸入名稱 - Area1或你有什麼。

  3. VS將創建~/areas/area1,並添加Views,Controllers和Models文件夾。

  4. 將例如IndexController.cs添加到Areas1/Controllers文件夾中。

  5. 添加視圖「索引」。CSHTML 「在區域1/views文件夾

  6. 重新生成解決方案。在瀏覽器中

  7. 打開http://localhosdt/area1/index,你應該看到你的觀點。

+0

對不起,我的意思是我在/控制器中添加了文件夾,所以它的/ controllers/area1/ – codecompleting

+0

就是倒退了,控制器屬於'〜/ areas/area1/controllers /',views在'〜/ areas/area1/views'中,等等 –

3

,你應該使用的文件夾結構是:

- Project - 
    Areas 
     < Area Name > 
      Controllers 
       MyController.cs 
      Models 
       MyModel.cs 
      Views 
       etc. 

你爲什麼不只是使用Add區上下文菜單選項?

在回答你關於在哪裏可以放置代碼的問題時,存在一定的靈活性,但ASP.NET MVC的許多功能依賴於約定而不是配置。把代碼放在MVC需要的地方,你會讓你更容易。

+1

+1」 你爲什麼不「 –