Asp.net mvc 3 获取请求路由参数

Asp.net mvc 3 获取请求路由参数,asp.net-mvc-3,Asp.net Mvc 3,标准的ActionLink会生成类似mysite.com/rar/hello/1/2010-01-01/的东西,如果你想让它使用路由魔法的话。这对于锚定标记和使用Html.ActionLink很好,但是,如果我想要一个使用GET请求的表单具有相同的效果,该怎么办?因此,一个如下所示的表单: @using(Html.BeginForm("MyAction", "MyController", new { id = 20, something = "2010-01-01" })) 生成类似site.

标准的
ActionLink
会生成类似mysite.com/rar/hello/1/2010-01-01/的东西,如果你想让它使用路由魔法的话。这对于锚定标记和使用
Html.ActionLink
很好,但是,如果我想要一个使用GET请求的表单具有相同的效果,该怎么办?因此,一个如下所示的表单:

@using(Html.BeginForm("MyAction", "MyController", new { id = 20, something = "2010-01-01" }))
生成类似site.com/20/2010-01-01而不是mysite.com的URL?id=20&something=2010-01-01

不使用javascript可以做到这一点吗?我的路由是正确的,因为
ActionLink
s生成正确的URL,但使用相同的参数,通过表单的GET请求生成丑陋的URL

干杯

---编辑---

我在谷歌上搜索了同样的问题,你猜怎么着?这是第一个答案。我甚至都不记得问过

所以我又遇到了同样的问题。就这么简单:

我点击一个链接,它会把我带到一个URL,比如
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中定义的路由约束的形式获取请求