我在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>
<% } %>
答案 0 :(得分:3)
您在生成的HTML中嵌套了表单。这不会按预期工作。从内部视图中删除表单。内部视图将不完整,因此如果您将其作为独立使用,则应将其共享,并创建另一个视图,该视图将打开表单,呈现内部视图,并关闭表单。
作为保证金说明:您没有使用默认活页夹。如果你愿意,你可以使用嵌套对象(例如Html.TextBox(“Mileage.Distance”))。
答案 1 :(得分:1)
HTML不支持嵌套表单。见这里:The FORM element
每个表单都必须包含在FORM元素中。单个文档中可以有多个表单,但FORM元素不能嵌套。
从部分视图中删除表单并让容器视图提供该表单,或从视图中删除表单并将其添加到部分,从而使其独立于父级。