当我调用AJAX Get / Post时,我可以将ViewModel
我的表单发送到我的Controller方法。有没有办法在此请求后使用ViewModel
的新值重新填充表单?我的方法的正确回报是什么:一个带有ViewModel或View的Json?像这样:
$.ajax({
dataType: "JSON",
data: $('#form').serialize(),
type: "GET",
url: "SomeController/doSomething",
success: function(myViewModel) {
// How to repopulate my form with the new values?
}
});
public class SomeController {
[HttpGet]
public ActionResult DoSomething(MyViewModel model) {
model.SomeProperty = "This property needs to be changed into the View.";
// The right way is returning a Json with the ViewModel...
return Json(model, JsonRequestBehavior.AllowGet);
// or return some View?
return View(model);
}
}
答案 0 :(得分:1)
将返回HTML
。我是否可以建议您返回PartailView(model)
,这样可以在整个系统中使用,您只需使用json
return PartialView(model)
对其进行编码即可。将部分视图放在Shared
文件夹中。
public ActionResult DoSomething(MyViewModel model) {
model.SomeProperty = "This property needs to be changed into the View.";
return PartialView("MyPartialView", model);
}
更改ajax以对表单进行字符串化,这将允许模型绑定工作:
$.ajax({
dataType: "JSON",
data: JSON.stringify({model : $('#form').serialize() }),
type: "GET",
url: "SomeController/doSomething",
success: function(myViewModel) {
$('#myUlDropDownListID').replaceWith(myViewModel);
}
});
在ajax
中,您需要将HTML
替换为返回,在这种情况下,您已拨打myViewModel
。即如果它是一张桌子那么你会做
$('#myUlDropDownListID').replaceWith(myViewModel);
这将用新HTML替换表