MVC提交多个表单

时间:2009-10-01 12:50:13

标签: asp.net-mvc

我在MVC中有一个标准的编辑表单视图,我需要放置一个用户控件,在本例中是在BeginForm中创建,如下所示:

当问题是提交表单时创建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>
<% } %>

2 个答案:

答案 0 :(得分:3)

您在生成的HTML中嵌套了表单。这不会按预期工作。从内部视图中删除表单。内部视图将不完整,因此如果您将其作为独立使用,则应将其共享,并创建另一个视图,该视图将打开表单,呈现内部视图,并关闭表单。

作为保证金说明:您没有使用默认活页夹。如果你愿意,你可以使用嵌套对象(例如Html.TextBox(“Mileage.Distance”))。

答案 1 :(得分:1)

HTML不支持嵌套表单。见这里:The FORM element

  

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

从部分视图中删除表单并让容器视图提供该表单,或从视图中删除表单并将其添加到部分,从而使其独立于父级。