正如Matthew所說,如果您不想更改URL並且不想使用JavaScript,那麼您最好的選擇是向服務器發送POST請求。然而,在ASP.Net MVC中,這可以非常整潔地完成。您需要修改View
兩個附加項,並添加新的ActionMethod
。
來看,第1部分
添加一個額外的表單視圖(這是不允許的WebForms,所以它可能會感到有點陌生,但它是完全正常的MVC)。
<form action="/myController/myView/<%= (ViewData["fieldCount"]+ 1) %>">
<input type="submit" value="Add custom field" />
</form>
注fieldCount
變量 - 這應該從Controller
如下面給出向下傳遞:
的控制器
添加以下ActionMethod
超載您目前有顯示錶單中的一個:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult myView(int id) {
ViewData["fieldCount"] = id;
Return View();
}
我使用了變量名稱id
,這樣你就不必另一條路線。
來看,第2部分
現在,當你有一個已知的段計數,所以你可以循環出的視場:
<form action="/myController/SaveData/" method="post">
...
<% for(i=0; i<int.TryParse(ViewData["fieldCount"]); i++) { %>
<input type="text" name="customData" /><br />
<% } %>
...
</form>
注意這兩種形式有不同的動作 - 這樣,您不必擔心點擊一個提交按鈕會意外發布錯誤的數據。
謝謝馬修,我現在不能嘗試這些,但我我們一定要在週末嘗試並報告。我不確定的是如何區分兩個服務器端,但發現這個答案:http://stackoverflow.com/questions/442704/how-do-you-handle-multiple-submit-buttons-in- ASP淨MVC的框架/ 443047#443047。我會在下面Tomas的答案中嘗試一下。 – Richbits 2009-05-22 17:03:12