[英]ASP.NET MVC C# routes.MapRoute not working
我正在更改ASP.NET,MVC,C#應用程序,但routes.MapRoute
條目未按預期工作。 在我的Global.asax.cs文件中,我有以下兩條路線-
routes.MapRoute(
"MyRoute1", // Route name
"{controller}/{action}/{something}/{name}/{id}/{myParameterA}",
new { controller = "MyController", action = "MyActionA", category = "something", name = "name", id = "id", myParameterA = "myParameterA" });
routes.MapRoute(
"MyRoute2", // Route name
"{controller}/{action}/{something}/{name}/{id}/{myParameterB}",
new { controller = "MyController", action = "MyActionB", category = "something", name = "name", id = "id", myParameterB = UrlParameter.Optional } );
我的控制器中的代碼如下所示:
public ActionResult MyActionA(string something, string name, string id, string myParameterA)
{
//do cool stuff!
}
public ActionResult MyActionB(string something, string name, string id, string myParameterB)
{
//do awesome stuff!
}
當我調用MyActionB
,即使參數位於URL中(例如:/ MyController / MyActionB / aThing / aName / 123/456),最終參數myParameterB
也會作為null進入Controller。
我確實希望最終參數(在上面的示例中為“ 456”)是可選的。
MyActionA
運行正常。
任何建議,將不勝感激! 另外,關於routes.MapRoute
工作方式是否有很好的參考? 謝謝!
不確定,但是我想將兩者互換一下,當您在第一個設置“ myParameterA =” myParameterA“”時,您將分配一個默認值,當您傳遞/ MyController / MyActionB / aThing / aName / 123/456時,URL為映射到第一個,但數字456與默認字符串值不兼容-因此作為空值傳遞。
編輯:哦,作為參考,Apress Pro MVC 3在Safari Informit上有一章非常出色。
這是因為一旦用路由本身中的字符串替換了參數,就無法區分這2條路由。 如果在路線上添加靜態零件,則應該能夠區分它們。
routes.MapRoute(
"MyRoute1", // Route name
"{controller}/{action}/{something}/{name}/{id}/firstroute/{myParameterA}",
new { controller = "MyController", action = "MyActionA", category = "something", name = "name", id = "id", myParameterA = "myParameterA" });
routes.MapRoute(
"MyRoute2", // Route name
"{controller}/{action}/{something}/{name}/{id}/secondroute/{myParameterB}",
new { controller = "MyController", action = "MyActionB", category = "something", name = "name", id = "id", myParameterB = UrlParameter.Optional } );
看看是否可行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.