假设我有一个通过AJAX发布的默认模型:
var data = {
// some members...
newMember: true
}
$.post("/mycontroller/action", data, function() {});
在我的控制器中,我不想污染进入控制器的现有模型。我希望能够将newMember参数添加到操作中。
[HttpPost]
public ActionResult AddMember(MemberModel model, bool newMember)
{
}
我想让模型绑定器填充newMember,而不是更改MemberModel,但这不起作用。我如何解决这个问题?
答案 0 :(得分:1)
而不是更改MemberModel
这正是视图模型的用途。控制器操作必须将视图模型作为参数接收,并将视图模型传递给视图。
但无论如何,如果由于某种原因你不在你的应用程序中使用视图模型,你可以发送一个JSON请求:
$.ajax({
url: '/mycontroller/action',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
newMember: true,
model: {
foo: 'bar'
}
}),
success: function(result) {
}
});
请记住,这适用于ASP.NET MVC 3.如果您使用的是旧版本,则可以按照this blog post中的说明编写自定义JsonValueProvider工厂。