2012-02-12 242 views
0

我正在將ASP.NET Web窗體應用程序遷移到ASP.NET MVC 3.我有點了解路由,但我有點不知道。在我的應用程序中,我在位於/ internal/products/find /的目錄中創建了三個.cshtml文件。爲了演示,這些.cshtml文件被命名爲「view1.cshtml」,「view2.cshtml」和「view3.cshtml」。ASP.NET MVC 3 - 設置路由

我有一個名爲「InternalController」的控制器。我的目標是對內部路徑中的所有位置使用InternalController。我不確定是否允許我嘗試去做。我認爲是。無論哪種方式,在這個時候,我已經在InternalController如下:

public ActionResult View1() 
{ 
    return View(); 
} 

public ActionResult View2() 
{ 
    return View(); 
} 

public ActionResult View3() 
{ 
    return View(); 
} 

在我的Global.asax.cs文件,我想如下注冊這些意見的途徑:

routes.MapRoute(
    "View1", 
    "{controller}/products/find/view1", 
    new { controller = "Internal", action = "View1" } 
); 

routes.MapRoute(
    "View2", 
    "{controller}/products/find/view2", 
    new { controller = "Internal", action = "View2" } 
); 

routes.MapRoute(
    "View3", 
    "{controller}/products/find/view3", 
    new { controller = "Internal", action = "View3" } 
); 

每當我嘗試在我的瀏覽器中訪問/ internal/products/find/view1時,我看到ASP.NET錯誤屏幕,它說:

未找到視圖'View1'或其主視圖支持搜索的位置。搜索以下位置: 〜/ Views/internal/View1.aspx 〜/ Views/internal/View1.ascx 〜/ Views/Shared/View1.aspx 〜/ Views/Shared/View1.ascx 〜/ Views /dashboard/View1.cshtml 〜/查看/儀表板/ View1.vbhtml 〜/查看/共享/ View1.cshtml 〜/查看/共享/ View1.vbhtml

我在做什麼錯? path/internal/products/find/view1是我最重要的部分。理想情況下,我想每次都在InternalController中公開。但我有一個粗略的去做。我究竟做錯了什麼?

謝謝!

回答

0

當你寫

routes.MapRoute(
    "View1", 
    "{controller}/products/find/{action}", 
    new { controller = "Internal", action = "View1" } 
); 

這意味着,只要用戶寫入他的瀏覽器:

http://mysite.com/blahblah/products/find/blahblahview 

它會激活動作廠景控制器blahblahview內。但這並不意味着view1.cshtml文件就在那個路徑上。其實,asp.net的MVC查找觀點在按照慣例定義的目錄...和convetion是:

~/Views/ControllerName/ViewName 

所以,您認爲應該是一個文件夾中:

~/Views/Internal/View1.cshtml 

與ASP.NET的WebForms你習慣了,ASP.NET MVC很大程度上受命名約定的驅動,你可能會看到(你總是將你的控制器命名爲BlahBlah * 控制器 *,你總是把你的視圖放入Views文件夾等等...閱讀一些教程here並追上基礎知識。

+0

我的.cshtml文件位於/ products/find目錄中。如何更新我的控制器或路線以使用這些視圖? – 2012-02-12 14:19:53

+0

我不會這樣做(只需將文件複製到默認視圖文件夾),但如果你真的想這樣做,這裏是答案:http://stackoverflow.com/questions/909794/how-to-change-默認視圖位置的方案,在-ASP淨MVC – 2012-02-12 15:27:45