【发布时间】:2015-08-21 14:23:44
【问题描述】:
我已经查看了几十个类似的问题,但大多数解决方案都实现了隐藏输入或扩展 javascript,但没有一个解决方案能够回答为什么一种输入有效而另一种无效。
此问题是 Internet Explorer 特有的,适用于 Chrome 和 FF。
这是我创建表单的代码:
@foreach (hello.Data.Models.Button btn in Model.Content.Buttons.OrderBy(b => b.Action))
{
if (btn.Action == "Close Message" && (Model.SurveyAuditExists == true || Model.SurveyContent == null))
{
<li class="response-button-item">
<input type="submit" class="response-button" name="@btn.Text" id="@btn.Text" onclick="submitForm.submit();" value="@hello.Biz.Helpers.ExtensionMethods.TrimString(btn.Text, new char[] { '&' })" />
</li>
}
下面是生成的 HTML 示例:
<form id="submitForm" action="/Go/Here/39354" method="post">
<ul id="response-button-list">
<li class="response-button-item">
<input name="&Agree" class="response-button" id="&Agree" onclick="submitForm.submit();" type="submit" value="Agree">
</li>
<li class="response-button-item">
<input name="&Disagree" class="response-button" id="&Disagree" onclick="submitForm.submit();" type="submit" value="Disagree">
</li>
</ul>
因此,当我在 Chrome/FF 上单击同意或不同意时,它会返回用户是否同意或不同意,但在 IE 中它返回空白并导致错误,因为 FormCollection 和 AllKeys 在我的控制器中为空。
将输入类型更改为复选框并单击该框可以在 IE 中正确提交。
我在页面中没有嵌套表单。
任何帮助将不胜感激!
【问题讨论】:
-
为什么有
<input type="submit" ..,然后加上onclick="submitForm.submit();?并且只需给您输入相同的name属性(例如name="Action",这样您就可以在post 方法中检查"Action"的值(最好通过在方法中添加参数string Action- 它的值将是“同意”或“不同意”取决于点击的按钮) -
@StephenMuecke 删除那个 onclick 解决了这个问题。这被用于复选框,但如果输入类型是提交,显然不需要。谢谢。
标签: asp.net forms asp.net-mvc-4 internet-explorer razor