我有一个模型,我传递给视图并使用Html.Raw将其编码为JSON对象:
var model = @Html.Raw(Json.Encode(Model));
在页面上,我从页面中的字段填写模型的各个部分:
model.ProductId = $("#txtProductId").val();
然后尝试使用ajax将其发布到控制器:
$.ajax({
type: 'POST',
url: '@Utl.Action("AddProducts"),
data: JSON.stringify(model),
dataType: 'json',
//etc
但它永远不会进入控制器方法:
[HttpPost]
public ActionResult AddProducts(ProductModel, model)
{
//do stuff with the model data
}
任何人都可以帮助我解释我如何改变模型发布的内容吗?
我的模型,简化:
public class OrderModel {
public ProductModel Product {get;set;}
public PersonModel Person {get;set;}
public List<ProductModel> Products {get;set;}
}
public class ProductModel {
public string Partno {get;set;}
public int Quantity {get;set;}
/// etc
}
public class PersonModel {
public string Surname {get;set;}
public string GivenName {get;set;}
public string Address {get;set;}
/// etc
}
答案 0 :(得分:3)
将代码更改为
$.ajax({
type: 'POST',
url: '@Url.Action("AddProducts")',
data: model, // not stringified
dataType: 'json',
....
或
$.post('@Url.Action("AddProducts")', model, function(data) {
// do stuff with returned data
});
将发回
[HttpPost]
public ActionResult AddProducts(ProductModel model)
{
//do stuff with the model data
}
假设您视图中的模型为ProductModel
但是,如果您只想回发表单,则可以使用var model = $('form').serialize();
而不是手动设置对象的属性。