2009-10-01 116 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元素不能嵌套。

從您的局部視圖中刪除表單,並讓容器視圖提供它,或者從視圖中刪除表單並將其添加到部分,從而使其獨立於父項。