我正在使用ASP.NET MVC Preview 4,并想知道如何使用路由引擎进行表单提交.
例如,我有一条这样的路线:
routes.MapRoute( "TestController-TestAction","TestController.mvc/TestAction/{paramName}",new { controller = "TestController",action = "TestAction",id = "TestTopic" } );
和一个表单声明如下所示:
<% using (Html.Form("TestController","TestAction",FormMethod.Get)) { %> <input type="text" name="paramName" /> <input type="submit" /> <% } %>
它呈现:
<form method="get" action="/TestController.mvc/TestAction"> <input type="text" name="paramName" /> <input type="submit" /> </form>
表单提交的结果网址是:
localhost/TestController.mvc/TestAction?paramName=value
有没有办法让此表单提交路由到所需的URL:
localhost/TestController.mvc/TestAction/value
我可以想到的唯一的解决方案是创建一个单独的动作,只需检查请求参数,或使用Javascript.
解决方法
解:
public ActionResult TestAction(string paramName) { if (!String.IsNullOrEmpty(Request["paramName"])) { return RedirectToAction("TestAction",new { paramName = Request["paramName"]}); } /* ... */ }