2009-10-01 73 views
3

我有内MVC标准的编辑表单视图,我需要把用户的控制,在这种情况下创建BeginForm里面,象下面这样:MVC不止一种形式提交

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

问题可能来自您在窗体中有窗体的事实吗? – 2009-10-01 12:53:27

回答

3

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

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

1

HTML中不支持嵌套表单。请参阅:The FORM element

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

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