【问题标题】:MVC3 Update model property on value change in TextBoxMVC3在TextBox中的值更改时更新模型属性
【发布时间】:2012-03-08 22:05:27
【问题描述】:

我正在开发一个 MVC3 Web 应用程序,并在使用 AJAX 将值从我的模型传递回 Action 时遇到问题。

当我

1) 浏览至此视图 2)改变数量文本框 3)点击保存

我得到的“数量”值与将模型传递到视图时得到的值相同。我希望模型与文本字段同步,但显然它们不是。我需要同步模型 - 或以其他方式将新的“数量”值放入 ActionLink。

-- 解决方案:

基本上我的FormCollection 没有更新的原因是因为我使用了Html.BeginForm 函数,并调用了Ajax.ActionLink。这些不能很好地协同工作。当更改为 Ajax.BeginForm 时,我成功地能够返回更新后的 FormCollection。

(我现在无法在此处粘贴代码,因为它已被重构很多并且无法识别)

【问题讨论】:

    标签: .net asp.net-mvc-3 model sync


    【解决方案1】:

    要更新模型,您需要发出 POST。然后你需要用 HttpPost 属性装饰你的 Save 方法,并接受你的模型作为第一个参数。框架会将参数传递给您。

    这是此论坛上的支持文章。

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

    编辑

    添加了与 Ajax ActionLink 更直接相关的修改链接——MVC Ajax.ActionLink doesn't find POST method

    【讨论】:

    • 好吧,这是有道理的。但是,我现在从视图中返回了一个空的 Order 对象。如果我尝试在您发布的链接中设置 [Bind(Prefix="Order")] ,我会得到一个空引用。无论如何,Bind 应该做什么?
    • 你可能不需要它并且可以拉它。这是一篇解释绑定的帖子——特别是前缀的含义——如果有帮助,请告诉我! [链接]stackoverflow.com/questions/1317523/how-to-use-bind-prefix
    • 在我看来主要问题是模型与我输入的值不同步。这不是 Html.ActionLink,而是 Ajax.ActionLink。我不知道这是否有什么不同。当我尝试将 orderNumber 和数量作为参数显式传递时,我得到的是原始值,而不是我修改后的值。
    • 查看这篇文章 [link]stackoverflow.com/questions/3036915/…
    • 我会在星期一检查并回复您。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-11-11
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    相关资源
    最近更新 更多