2011-01-07 46 views
0

我一直遇到MVC表單的問題,特別是有一個表單提交併顯示第二個表單。當一個提交按鈕觸發第二個表單時,第二個表單的提交按鈕發送POST請求到原始表單的動作

第二個表單的提交按鈕轉到原始表單的操作。 我問是否可以嵌套表格:Why do nested forms in Asp.net mvc not have scope?。由於表單標籤不能確實嵌套,我改變了事情,所以表單在不同的divs中,認爲這樣可以解決問題。

用戶單擊第一個窗體上的提交後,會出現第二個窗體。當用戶點擊該表單的提交按鈕時,它會發送到原始表單的控制器操作,而不是以新表單的視圖和視圖模型命名的操作員。

的形式使用 Ajax.BeginForm(new AjaxOptions {UpdateTargetId="X"}))

第二種形式具有在其端部的<input type="submit">標籤被插入。同樣,當用戶單擊此按鈕時,表單模型中的值都不會被髮送回控制器。

我試着明確指定在阿賈克斯鏈接控制器動作:

<%: Ajax.ActionLink("Add OS","OS",new AjaxOption{UpdateTargetId="", HttpMethod="POST"})%>

這的形式發送回正確的行動。但是,所有返回的值都是null。

FormCollection與Html.BeginForm一起簡短地工作,並通過解析FormCollection字典,但由於我不完全理解的原因,該設置停止工作。

這裏有什麼問題?我覺得我再次在webform土地...

+0

也許這是一個類似的問題http://stackoverflow.com/questions/649513/how-do-i-perform-a-secondary-action-i-e-calculate-fields-in-asp-net-mvc? – rsteckly 2011-01-07 04:19:26

回答

0

我認爲這裏的問題是,你正試圖提交兩種不同的形式,以同一行動。通常當你有兩個表單時,你有兩個不同的關聯視圖模型包含這些字段。所以我會建議你有兩個不同的控制器操作。

+0

嗨達林 - 不,事實上,新形式有不同的控制器動作。我也有不同的視圖模型。問題是提交按鈕發佈到第一個控制器操作,而不是第二個。當我嘗試手動指定應該使用Ajax.ActionLink發佈的位置時,它會轉到正確的操作,但會返回空值。 – rsteckly 2011-01-07 17:28:08