2
我有一個ASP.NET MVC 5網站。如何讓T4MVC使用類似「{controller}/{action}/{id}」的路線?
繼在各種博客的建議,我用T4MVC我的路由從改變:
context.MapRoute(
name:"MyArea_default",
url:"MyArea/{controller}/{action}/{id}",
defaults:new { action = "Index", id = UrlParameter.Optional }
);
...到...
context.MapRoute(
name: "MyArea_default",
url: "MyArea/{controller}/{action}",
defaults: MVC.MyArea.Orders.Index()
);
這種 「工作」,但我沒有奇蹟關於從網址格式中移除{id}細分受衆羣的信息。
/MyArea/Orders/Edit/1
...到:果然,網址已經從(例如)改變
/MyArea/Orders/Edit?id=1
我真的不是查詢字符串參數的粉絲,所以我想使用以前的表單。
我試圖把{ID}部分迴路由定義:
context.MapRoute(
name: "MyArea_default",
url: "MyArea/{controller}/{action}/{id}",
defaults: MVC.MyArea.Orders.Index()
);
...但當然默認不再id
提供一個默認值,因此不能正常工作。如果Index
動作了一個可選的id
參數,那麼我能夠做到這一點:
context.MapRoute(
name: "MyArea_default",
url: "MyArea/{controller}/{action}/{id}",
defaults: MVC.MyArea.Orders.Index(null) // <- DEFAULT FOR ID
);
...但事實並非如此,所以我堅持。
另外,我很擔心現在在路由定義中指定了一個特定的控制器。在T4MVC更改之前,該路線未指定控制器。新款式現在是否意味着我需要每個控制器的路線?
啊,感謝 - 這看起來很有希望。一旦我的項目編譯完成,我會嘗試一下(現在有1000件!)。你有什麼補充我的最後一點 - 默認現在似乎指定一個以前他們沒有的控制器? –
嗯,你是怎麼逃避不*以前指定控制器?通常在那裏(例如,創建一個乾淨的新MVC應用程序時)。 –
終於開始嘗試這個,並且它不起作用。如果我像上面那樣更改默認值,那麼它看起來沒有任何作用(「id」仍然作爲查詢字符串參數傳遞)。如果我然後將「/ {id}」部分添加到URL模式中,則當我嘗試訪問我的「索引」時出現錯誤:「路由表中沒有路由與提供的值匹配。」 –