1
我正在使用MVC 4.0,我試圖爲每個控制器添加一個路由。MVC路由多個控制器
那麼,我的第一個控制器被稱爲CustomersController。補充說,我已經 的路線是:
routes.MapRoute(
name: "Customer",
url: "{controller}/{action}/{IdCustomer}",
defaults: new { controller = "Customers", action = "Index", IdCustomer = UrlParameter.Optional }
);
當我運行的應用程序,我得到的索引頁以下鏈接(列表):
http://localhost:6838/Customers/Create/5
http://localhost:6838/Customers/Edit/5
http://localhost:6838/Customers/Details/5
http://localhost:6838/Customers/Delete/5
好,太好了!這是我正在尋找的,但現在開始我的問題。我又增加了 控制器,叫做上述ItemsController(有相同的動作 - 創建/編輯/細節/刪除),然後我試圖添加相同的路線:
routes.MapRoute(
name: "Item",
url: "{controller}/{action}/{IdItem}",
defaults: new { controller = "Items", action = "Index", IdItem = UrlParameter.Optional }
);
但現在的結果是不同的...我得到以下鏈接:
http://localhost:6838/Items/Create?IdItem=1
http://localhost:6838/Items/Edit?IdItem=1
http://localhost:6838/Items/Detail?IdItem=1
http://localhost:6838/Items/Delete?IdItem=1
爲什麼。爲什麼?「(這是行不通的,爲什麼它是新的一個工作僅第一路由,而不是 只是增加?
最好的問候, 丹
您的路線過於通用。爲什麼當這些操作針對客戶和項目(根據ID的名稱)時,仍然在使用「{controller}」?您應該使用「Customers/{action}/{IdCustomer}」或「Items/{action}/{IdItem}'。請記住,URL生成是一個順序測試。分析器發現它將使用的第一個匹配URL(因此在這種情況下使用客戶網址)。 –
這是我第一次使用路線..我以前從未使用過它。理解你的意思很複雜。 – Dan
現在我明白了......謝謝@BradChristie – Dan