GET请求路由参数
问题描述:
标准ActionLink
会生成类似mysite.com/rar/hello/1/2010-01-01/的内容,如果您希望它使用路由魔术。这对于锚标签和使用Html.ActionLink
是好的,但是,如果我想要使用GET请求获得相同效果的表单,该怎么办?因此,一个形式看起来像如下:GET请求路由参数
@using(Html.BeginForm("MyAction", "MyController", new { id = 20, something = "2010-01-01" }))
产生一个URL像site.com/20/2010-01-01代替mysite.com?id=20 &东西= 2010-01-01
这可以不使用JavaScript?我的路线是正确的,因为ActionLink
会生成正确的网址,但使用相同的参数,通过表单的GET请求会生成丑陋的网址。
干杯
---编辑---
我做了同样的问题在谷歌搜索,你猜怎么着?这个答案是第一个。我甚至没有记得问这个问题。
所以我又遇到了同样的问题。这很简单:
我点击一个链接,它会带我到一个网址,如site.com/10/100/Param
。我有这些相同的路由值的形式,看起来是这样的:
@using(Html.BeginForm("Action", "Controller", FormMethod.Get)) {
@Html.Hidden("param1", 10)
@Html.Hidden("param2", 110)
@Html.Hidden("param3", "MyOtherParam")
}
然后,当我提出这种形式,我希望看到新的路线为site.com/10/110/MyOtherParam
代替。
我能想到做到这一点的唯一方法是发布到操作方法,然后从那里重定向。
任何想法?
答
你有明确描述在Global.asax的这个路线?你会需要一个像
routes.MapRoute(
"NameOfRoute", // Route name
"{controller}/{action}/{id}/{something}", // URL with parameters
new { controller = "My", action = "MyController" }
);
一个条目,以上述
的ActionLink的我不知道这是如何承担任何意义完全一致?我们在这里根本不谈论正斜杠。上述路线默认情况下完全有效。我正在谈论与Global.asax中定义的路由约束匹配的GET请求 – Kezzer 2011-06-10 12:18:16