例如定制的路线,你有这样的定制路线: 有两个参数,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