例如定製的路線,你有這樣的定製路線: 有兩個參數,ID和客戶ID
CustomerOrder/{action}/{id}/customerid={customerid}
網址變成這個樣子:
CustomerOrder/Create/customerid=1
如何你可以得到customerid並在視圖中使用它?
<%= Html.MenuItem("Back to List", "Index", new { customerID = ???????? })%>
例如定製的路線,你有這樣的定製路線: 有兩個參數,ID和客戶ID
CustomerOrder/{action}/{id}/customerid={customerid}
網址變成這個樣子:
CustomerOrder/Create/customerid=1
如何你可以得到customerid並在視圖中使用它?
<%= Html.MenuItem("Back to List", "Index", new { customerID = ???????? })%>
繼承人在Global.asax中
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("CustomerOrders", "CustomerOrder/{action}/{id}/customerid={customerid}",
new { customerid= "{customerid}", controller = "CustomerOrder", action = "Index", id = "" });
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" });
}
CustomerOrders不是一個正確的網址,因爲你沒有指定?任何狀況之下。 – 2009-10-14 08:33:08
當然,您至少應該這樣做:CustomerOrder/{action}/{id} /?customerid = {customerid} – 2009-10-14 08:33:44
請用此更新您的問題,而不是將其添加爲新答案。 – 2009-10-14 08:44:46
等號是要混淆URL解析器,因爲它具有特殊的意義。
如果你要你的路線更改爲:
routes.MapRoute("CustomerOrder", "CustomerOrder/{action}/{id}",
new { controller = "Order", id = "" });
那麼下面視圖代碼
<%= Html.MenuItem("Back to List", "Index", new { customerID = 5 })%>
將創建一個鏈接:
CustomerOrder/Index/?customerid=5
這會工作得很好。
注意
鑑於當前的路由配置,你會被刪除您CustomerOrder的路線,因爲它壞了,你從默認路由所期望的結果得到同樣的結果。
我試圖將其更改爲?customerid = 1
,但發生此錯誤。 路由URL不能以'/'或'〜'字符開頭,並且不能包含'?'字符。 參數名稱:routeUrl –
h3n
2009-10-14 07:20:28
@fleents:你可以在Global.asax.cs中複製你的路由配置嗎?這可能會有所幫助。並把它放在你原來的問題中。不在這裏...... – 2009-10-14 07:55:16
@Frients:你不能在路線中放置querystrings。菲爾哈克討論,他們不使用在這裏:http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx#58629 – 2009-10-14 08:45:28
我是新來的MVC,但我想控制器得到了客戶ID參數,並可能被傳遞到視圖(通過ViewData的)的代碼,沒有?
難道您不能更改您的請求網址以匹配此路線:CostomerOrder/{action}/{id}/{customerId}? – 2009-10-14 06:33:57
有什麼區別? – h3n 2009-10-14 06:51:28
然後問題是什麼?對不起 – 0100110010101 2009-10-14 07:00:43