在ASP.NET MVC 4中,我想知道如何爲我生成鏈接。Asp.Net MVC 4路由和鏈接生成
設想一個簡單的控制器3點的操作,每次取一個整數參數 「的requestId」,例如:
public class HomeController : Controller
{
public ActionResult Index(int requestId)
{
return View();
}
public ActionResult About(int requestId)
{
return View();
}
public ActionResult Contact(int requestId)
{
return View();
}
}
和該登記路徑(缺省路由之前):
routes.MapRoute(
name: "Testroute",
url: "home/{action}/{requestId}",
defaults: new { controller = "Home", action = "Index" }
);
我撥打我的索引視圖使用http://localhost:123/home/index/8
在此視圖上,我呈現其他兩個操作的鏈接:
@Html.ActionLink("LinkText1", "About")
@Html.ActionLink("LinkText2", "Contact")
現在我希望MVC呈現此鏈接包括「的requestId」當前路由值,就像這樣:
http://localhost:123/home/about/8
http://localhost:123/home/contact/8
,但我得到這些鏈接(不放慢參數):
http://localhost:123/home/about
http://localhost:123/home/contact
...但不使用索引動作,如果我將指定一個:
@Html.ActionLink("LinkText3", "Index")
我想避免的是用這種方式顯式地指定參數:
@Html.ActionLink("LinkText1", "Contact", new { requestId = ViewContext.RouteData.Values["requestId"] })
當我移動動作之前的RequestID參數放慢參數它就像我希望,但我不想動它:
routes.MapRoute(
name: "Testroute",
url: "home/{requestId}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
有人能解釋我這種行爲嗎?我怎樣才能得到這個工作,沒有明確指定參數?
我有同樣的問題的requestId爲可選。 :\ – 2013-06-27 18:09:45