使用Ajax Post更新模型

时间:2014-07-29 14:52:06

标签: javascript jquery ajax asp.net-mvc

我正在尝试使用后台Ajax Post更新模型,下面是我现有的代码

Javascript(Jquery)

var url = '@Url.Action("UpdateValue", "MyController")';
$.post(url, $('form').serialize(), function (view) {
     //...
});

控制器

[HttpPost]
public ActionResult UpdateValue(MyViewModel model)
{
    model.FileName = "NewValue";
    return Json(new { success = true });
}

此代码将现有模型发布到控制器,然后我更新字段FileName,但这似乎不保留更新的值(“NewValue”)。如何使用新值更新现有模型?

2 个答案:

答案 0 :(得分:3)

在操作中设置model.FileName不会对UI或数据库执行任何操作。这取决于您要更新的内容,但如果您尝试更新UI,则需要将模型推回到客户端,然后通过客户端JavaScript重新加载UI(因为您正在执行AJAX帖子用JQuery)。

答案 1 :(得分:0)

如何发回更新的模型:

[HttpPost]
public ActionResult UpdateValue(MyViewModel model)
{
    model.FileName = "NewValue";
    return Json(model);
}

然后在$ .post中,您可以阅读回复并更新您的字段。

正如Brain Mains评论的那样,你不能坚持这个模型。模型是访问POSTed值的好方法。

假设您发布的值超过FileName。所以不要这样做:

Request.Form["FileName"]; 
Request.Form["Id"]; 
Request.Form["Size"];

你这样做:

model.FileName
model.Id
model.Size

使用起来更干净,更好。

因此,如果您按照发布数据的过程进行操作:

用户点击按钮>数据通过ajax提交>到达asp.net引擎>引擎将提交的数据绑定到模型>将模型传递给控制器​​>控制器返回一个结果(在这一刻...... hackemate!......模型消失了)