Форма всегда собирается кодировать параметры в виде строки запроса. Если вы хотите, чтобы клиент выдавал симпатичный URL GET
, то вам нужно использовать обработчик отправки, а не создавать URL-адрес на стороне клиента. Если нормально иметь дополнительную обратную передачу, рассмотрите возможность использования POST
и получите действие, которое принимает POST
, восстанавливает URL и выполняет RedirectToAction для действия, которое принимает значения через GET
.
на стороне клиента:
$(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, ... )
{
...
}