GET请求路由参数

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代替。

我能想到做到这一点的唯一方法是发布到操作方法,然后从那里重定向。

任何想法?

对不起,它不起作用。在这里找到答案:

How to make ASP.NET Routing escape route values?

+0

的ActionLink的我不知道这是如何承担任何意义完全一致?我们在这里根本不谈论正斜杠。上述路线默认情况下完全有效。我正在谈论与Global.asax中定义的路由约束匹配的GET请求 – Kezzer 2011-06-10 12:18:16

你有明确描述在Global.asax的这个路线?你会需要一个像

routes.MapRoute(
    "NameOfRoute", // Route name 
    "{controller}/{action}/{id}/{something}", // URL with parameters 
    new { controller = "My", action = "MyController" } 
); 

一个条目,以上述