我注意到Html.BeginForm()方法将提供的routeValues编码为FORM 标签的action属性。这适用于 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 中的错误,有时会被修复?