2012-02-17 86 views
0

我正在研究MVC3 Web應用程序,並在將值從我的模型傳遞迴使用AJAX的Action時遇到問題。MVC3更新文本框中值更改的模型屬性

當我

1)瀏覽這個視圖 2)更改數量文本框 3)點擊保存

我得到同樣的值爲「數量」我得到當我通過模型成風景。我期望Model與Textfields同步,但顯然他們不是。我需要將模型同步 - 或者將新的「數量」值添加到ActionLink中的其他方式。

- 解決方案:

基本上爲什麼,因爲我用的是Html.BeginForm功能,並呼籲Ajax.ActionLink我的FormCollection沒有更新了的原因。這些不能很好地協同工作。當更改爲Ajax.BeginForm時,我成功地能夠返回更新的FormCollection。

(我不能,因爲它已經被很多重構,是無法識別現在這裏粘貼代碼)

回答

1

要更新模式,您將需要發出POST。然後你需要用HttpPost屬性裝飾你的Save方法,並接受你的模型作爲第一個參數。該框架將把這個論點傳遞給你。

這是本論壇的支持文章。

ASP.NET MVC [HttpPost] action accepts single object, spits back validation errors to ViewPage<CustomViewModel>

編輯

添加經修改的鏈路更直接地與阿賈克斯的ActionLink - MVC Ajax.ActionLink doesn't find POST method

+0

確定這是有道理的。不過,我現在從視圖中返回一個空的Order對象。如果我嘗試設置[Bind(Prefix =「Order」)],就像您發佈的鏈接中那樣,我會返回空引用。無論如何,綁定設想做什麼? – AndersLindas 2012-02-17 14:44:05

+0

你可能不需要,可以拉它。這裏有一篇文章解釋綁定 - 具體是什麼前綴的意思 - 讓我知道如果有幫助! [鏈接] http://stackoverflow.com/questions/1317523/how-to-use-bind-prefix – 2012-02-17 14:48:43

+0

對我來說似乎主要的問題是,該模型與輸入值不同步。這不是一個Html.ActionLink,而是一個Ajax.ActionLink。我不知道這是否有所作爲。當我嘗試傳遞orderNumber和數量作爲參數顯式時,我得到原始值,而不是我修改它的值。 – AndersLindas 2012-02-17 14:58:25