2017-09-27 32 views
2

我將MVC Core 1中的應用程序轉換爲2.除了現在支持分頁的控制器操作無法按照慣例在提供Page參數時按慣例搜索視圖路徑之外,一切正常。例如:MVC Core 2.0不按照慣例搜索視圖

/User/Index作品展UserController發現/Views/User/Index.cshtml

/User/Index?Page=2作品。

/User/Index/Page2

InvalidOperationException異常失敗:視圖 '索引' 沒有被發現。搜索了以下位置:/ Views/Shared/Index.cshtml`

注意不搜索/Views/User anymore

由於頁面鏈接被標籤助手更改爲/User/Index/Page2格式,因此路由似乎正在工作。如果我刪除了分頁路徑,那麼這些網址會恢復到查詢字符串版本。這裏是我的路線:

app.UseMvc(routes => { 
    routes.MapRoute(
     name: "pagination", 
     template: "{controller}/{action}/Page{page}", 
     defaults: new { action = "Index"} 
    ); 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}" 
    ); 
}); 

而且UserController中的指數操作:

public async Task<IActionResult> Index(int page = 1) => 
    View(await GetIndexModel(page)); 

分頁網址工作,如果我指定要查看完整的路徑:

public async Task<IActionResult> Index(int page = 1) => 
    View("~/Views/User/Index.cshtml", await GetIndexModel(page)); 

我用的是相同的分頁模式在許多控制器中,現在它們都以相同的方式被破壞。分頁URL和View按照慣例在Core 1中工作,任何想法爲什麼Core 2在某些情況下不會按照慣例搜索View?頁面參數與Controller View搜索有什麼關係?我如何強制控制器每次都按照慣例搜索視圖?

回答