2016-10-24 119 views
0

我有asp.net核心應用程序。在我的應用程序的默認路由設置爲Home/Index/id如何在asp.net核心應用程序中設置路線

我還有一個控制器名稱Document

public class DocumentController : Controller 
{ 
     public IActionResult Index(int? id) 
     {   
      // id may be null. Do something with id here 
      return View();   
     } 

     public IActionResult Detail(int id) 
     { 
      return View(); 
     } 
} 

在startp.cs我有設置我的路線如下

app.UseMvc(routes => 
      { 
       routes.MapRoute(
        name: "default", 
        template: "{controller=Home}/{action=Index}/{id?}"); 

       routes.MapRoute(
        name: "document", 
        template: "Document/{action}/{id?}", 
        defaults: new { controller = "Document", action = "Index" }); 

      }); 

我可以瀏覽文檔視圖爲http://localhost:40004/Documenthttp://localhost:40004/Document?id=1234

但是,我希望以下路線有效
http://localhost:40004/Document/1234
http://localhost:40004/Document?id=1234
http://localhost:40004/Document/Details/1234
http://localhost:40004/Document/Details?id=1234

在startup.cs應該是什麼我的路由配置?

+0

您的問題更新是不同於您原來的文章!在某人發佈您的第一篇文章的答案後,您不應該那樣做 – Shyju

+0

您想要返回所有請求的詳細信息視圖嗎? – Shyju

+0

沒有。他們是兩條不同的路線。 'http:// localhost:40004/Document/1234'應該返回'Index'視圖,'http:// localhost:40004/Document/Details/1234'應該返回'Detail'視圖 – LP13

回答

1

編輯:按照問題編輯

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}"); 

    routes.MapRoute(
     name: "document", 
     template: "Document/{id?}", 
     defaults: new { controller = "Document", action = "Index" }); 
}); 

這條路線的定義會爲你

,因爲它與匹配,就不需要對細節的URL特定路由定義的所有路由模式工作默認約定(由默認路由定義處理)。所以它會正常工作

+0

'Document/1234'和'Document/Details/4444'這兩條路線都可以工作 – LP13

相關問題