2009-12-15 40 views
0

我有视图看起来像这样: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会工作。 我做了一些研究,似乎嵌套窗体标签导致问题。

很高兴听到任何可能的提示或建议来解决这个问题。

谢谢!

回答

2

嵌套表单在HTML中是非法的。你做不到。 IE的反应往往比Firefox差,但是你不应该在任何浏览器中都这么做。

There can be several forms in a single document, but the FORM element can't be nested.

+0

所以,可能的解决方案之一是删除嵌套表单,并用Ajax.ActionLink替换提交按钮? – shkipper 2009-12-15 14:32:34

+0

或者只是取消嵌套表单。你可以有*多个*表格;他们只是不能嵌套。 – 2009-12-15 14:47:11

+0

嗨。感谢您的回复。如果我将它们嵌套,会有一些设计问题:)。如果我使用actionlink(或jQuery),我需要将所有数据手动传递给动作? (即新{id = textbox1.value,name = textbox2.value}? – shkipper 2009-12-15 14:56:21

1

我喜欢,在情况就是这样,做一个div它看起来像一个形式(甚至一个对话框,一拉DHTML)及导线上的这些“形式阿贾克斯后“元素到按钮的onclick事件。这显然需要更多的工作,但是却让我摆脱了很多麻烦。