asp.net-mvc – Html.BeginForm使用FormMethod.GET丢失routeValues
发布时间:2020-05-28 17:54:21 所属栏目:asp.Net 来源:互联网
导读:我注意到 Html.BeginForm()方法将提供的routeValues编码为FORM标记的action属性.这适用于POST方法.但是如果方法是GET,则操作URL中的所有参数都被浏览器剥离(在IE8和Firefox 3.0.7上测试). 例如,这个代码在视图中 % using (Html.BeginForm(TestAction, TestCon
|
我注意到 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中的一个错误,它会在某个时候修复吗? 解决方法正如您所看到的,生成的HTML是“正确的”,并且具有您想要的语义,因此这不是服务器端问题,而是客户端问题.在这种情况下,浏览器将从操作URL中删除查询部分,而您希望它将附加到查询中.如果您阅读规范,则该操作不应包含查询(它是URI,而不是URL),因此实际上您遇到了HTTP规范的“限制”. 您将被定向到没有查询的裸网址,因为在HTML中您无需提交任何内容.尝试为提交字段指定名称和值,或者添加隐藏字段,您将看到参数在查询中传输. 在这种情况下,你绝对应该使用隐藏字段. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 你用ReSharper做什么?
- asp.net-mvc-3 – 如何根据当前页面和/或主页在Orchard CMS
- 从ASP.NET工作进程ID获取性能计数器实例名称(w3wp#XX)
- .net – 什么是Automapper?
- asp.net-core-2.1 – 如何在asp.net Core 2.1.1中为Identit
- asp.net-mvc – mvc 4 beginform with route name
- 如何在ASP.NET中为不同的URL设置不同的超时
- asp.net – 查找应用程序根URL而不使用
- 经典的asp字符编码
- asp.net – 我被困在UpdatePanel陷阱中
推荐文章
站长推荐
- asp.net-mvc-3 – Facebook身份验证和奇怪的重定
- ASP.NET身份两个因素不起作用 – Cookie问题?
- asp.net-mvc – DropDownListFor在编辑视图上不重
- asp.net – asmx webservices与REST兼容?
- 从asp.net ListBox中获取所有选定的项目
- asp.net-mvc – 文件输入MVC 3所需的客户端验证
- ASP.NET应用程序中的浏览器缓存
- asp.net-mvc – 控制台应用程序HttpClient发布到
- asp.net-mvc – 为什么ASP.NET MVC Html.CheckBo
- asp.net-mvc-3 – ActionButton而不是ActionLink
热点阅读
