标准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?id=20&something=2010-01-01
这可以不使用javascript完成吗?我的路由是正确的,因为ActionLink
生成了正确的URL,但是使用相同的参数,通过表单的GET请求会生成丑陋的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
。
我能想到的唯一方法是POST一个动作方法,然后从那里重定向。
有什么想法吗?
答案 0 :(得分:0)
抱歉,它不起作用。这里回答:
答案 1 :(得分:0)
您是否在global.asax中明确描述了此路由?你需要一个像
这样的条目routes.MapRoute(
"NameOfRoute", // Route name
"{controller}/{action}/{id}/{something}", // URL with parameters
new { controller = "My", action = "MyController" }
);
完全匹配上面的ActionLink