Я заметил, что метод Html.BeginForm() кодирует предоставленные routeValues в атрибут action тега FORM. Это хорошо работает с методом POST. Но если метод GET, все параметры URL-адреса действия удаляются браузером (проверено на IE8 и Firefox 3.0.7).
Например, этот код в поле зрения
<%
using (Html.BeginForm("TestAction", "TestController", new { test = 123 },
FormMethod.Get))
{
Response.Write("<input type='submit'>");
};
%>
дает такой HTML
<form action="/TestController/TestAction?test=123" method="get">
<input type='submit'>
</form>
Но после отправки формы URL стал /TestController/TestAction, а не /TestController/TestAction?test=123 (параметр потерян).
Теперь я использую группу вызовов Html.Hidden() вместо параметра routeValues, но мне интересно, есть ли другой обходной путь? Следует ли это рассматривать как ошибку в MVC, которая когда-нибудь будет исправлена?