2012-02-17 81 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