MVC多个表单提交

3

我在MVC中有一个标准的编辑表单视图,我需要在BeginForm内放置一个用户控件,比如下面这样:

当问题是在提交表单时Create ascx没有触发它在控制器中的操作,我做错了什么?

<% using (Html.BeginForm())
   {%>
<fieldset>
    <legend>Tax</legend>
    <p>
        <label for="Name">
            Name:</label>
        <%= Html.TextBox("Name", Model.Tax.Name) %>
        <%= Html.ValidationMessage("Name", "*") %>
    </p>
    <p>
        <%  Html.RenderAction("Create", "Mileage"); %>
    </p>
    <p>
        <input type="submit" value="Save" />
    </p>
</fieldset>
<% } %>

这里是Create.ascx。
<% using (Html.BeginForm())
   {%>
<fieldset>
    <p>
        <label for="Distance">
            Distance:</label>
        <%= Html.TextBox("Distance", Model.Mileage.Distance)%>
        <%= Html.ValidationMessage("Distance", "*") %><span class="field-validation-error"
            id="field-validation-error-distance">*</span>
    </p>
</fieldset>
<% } %>

1
问题可能是因为你的表单中有一个表格吗? - Alexandre Brisebois
2个回答

3
您的HTML代码中存在嵌套表单,这会导致功能无法正常使用。请从内部视图中删除表单。如果您将其作为独立视图使用,则内部视图将不完整,因此您应该将其共享,并创建另一个视图,仅打开表单,渲染内部视图,然后关闭表单。
另外需要说明的是,您没有使用默认的绑定器。如果您想要使用它,即使涉及嵌套对象(例如Html.TextBox("Mileage.Distance")),也可以正常工作。

1

HTML不支持嵌套表单。请参阅此处:FORM元素

每个表单都必须包含在FORM元素中。一个文档中可以有多个表单,但FORM元素不能嵌套。

要么从你的部分视图中删除表单,让容器视图提供它,或者从视图中删除表单并将其添加到部分视图中,使其独立于父级。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接