Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mvc.net重定向表单到达';尼斯';url最佳方法_C#_Asp.net_Asp.net Mvc_Redirect_Routes - Fatal编程技术网

C# mvc.net重定向表单到达';尼斯';url最佳方法

C# mvc.net重定向表单到达';尼斯';url最佳方法,c#,asp.net,asp.net-mvc,redirect,routes,C#,Asp.net,Asp.net Mvc,Redirect,Routes,我目前有一系列路线,如 {controller}/{action}/{from}/{to}/{some}/{other}/{things} {controller}/{action}/{from}/{to}/{some}/{other} {controller}/{action}/{from}/{to} {controller}/{action} 以及带有get操作的表单视图,以检索结果。但是get操作将转到 带有查询字符串中参数的默认/最后一个路由。处理重定向到最特定路由的漂亮url的最佳方法

我目前有一系列路线,如

{controller}/{action}/{from}/{to}/{some}/{other}/{things}
{controller}/{action}/{from}/{to}/{some}/{other}
{controller}/{action}/{from}/{to}
{controller}/{action}

以及带有get操作的表单视图,以检索结果。但是get操作将转到 带有查询字符串中参数的默认/最后一个路由。处理重定向到最特定路由的漂亮url的最佳方法是什么? i、 e.当表格提交至
myurl.com/controller/action?from=20091021&to=20091131
它被重定向到
myurl.com/controller/action/from-20091021/to-20091131

一般来说,我想知道我是否只是缺少了一些关于合理路由设计的基本信息,因为我在Html.RouteLink映射到路由而不是查询字符串样式的URL时也遇到了一些问题


提前感谢您提供的任何建议/指导/有用的链接

表单总是将参数编码为查询字符串。如果您希望客户端发出一个漂亮的url
GET
,那么您需要使用提交处理程序,而不是在客户端构造url。如果可以有一个额外的往返行程,那么考虑使用<代码> POST <代码>,并采取一个动作,使用<代码> POST <代码>,并重构URL,并对通过代码接受值的操作进行重定向操作。 客户端:

 $(function() {
     $('form').submit( function() {
         var params = [ $('from').val(), $('to').val(), ... ];
         location.href = $(this).attr('action') + '/' + params.join('/');
         return false;
     });
 $);
服务器端

 [AcceptVerbs( HttpVerbs.Post )]
 [ActionName( "MyAction" )]
 public ActionResult MyPostAction( string from, string to, ... )
 {
     // you may be able to simply reuse the RouteValueDictionary, but may
     // also need some transformations...
     return RedirectToAction( "MyAction", new { from = from, to = to, ... } );
 }

 [AcceptVerbs( HttpVerbs.Get )]
 public ActionResult MyAction( string from, string to, ... )
 {
     ...
 }

啊哈!我想我发现了基于路由的东西没有返回我期望的路由的问题-我为太多的路由指定了默认值,这意味着默认(最后一个)路由总是匹配的-并且每个参数都在查询字符串中结束