ASP .NET MVC,在IE中未知的运行时错误(嵌套形式)
问题描述:
我有视图看起来像这样:ASP .NET MVC,在IE中未知的运行时错误(嵌套形式)
<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "someDiv", HttpMethod = "Post"))
{%>
<%= Ajax.ActionLink("Add new", "AddNewItem", new AjaxOptions { UpdateTargetId = "divAddNewItem", HttpMethod = "Get" })%>
<div id="divAddNewItem">
</div>
<input type="submit" value="Create" />
<% } %>
“AddNewItem”动作返回局部视图,其呈现给divAddNewItem,AddNewItem视图代码看起来像这样的:在这种情况下
<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "divAddNewItem", HttpMethod = "Post"))
{%>
<input type="submit" value="Add" />
<% } %>
,之后点击“新增”按钮,IE会给出异常(未知的运行时错误),而Chrome和Firefox会工作。 我做了一些研究,似乎嵌套窗体标签导致问题。
很高兴听到任何可能的提示或建议来解决这个问题。
谢谢!
答
嵌套表单在HTML中是非法的。你做不到。 IE的反应往往比Firefox差,但是你不应该在任何浏览器中都这么做。
There can be several forms in a single document, but the FORM element can't be nested.
答
我喜欢,在情况就是这样,做一个div它看起来像一个形式(甚至一个对话框,一拉DHTML)及导线上的这些“形式阿贾克斯后“元素到按钮的onclick事件。这显然需要更多的工作,但是却让我摆脱了很多麻烦。
所以,可能的解决方案之一是删除嵌套表单,并用Ajax.ActionLink替换提交按钮? – shkipper 2009-12-15 14:32:34
或者只是取消嵌套表单。你可以有*多个*表格;他们只是不能嵌套。 – 2009-12-15 14:47:11
嗨。感谢您的回复。如果我将它们嵌套,会有一些设计问题:)。如果我使用actionlink(或jQuery),我需要将所有数据手动传递给动作? (即新{id = textbox1.value,name = textbox2.value}? – shkipper 2009-12-15 14:56:21