我無法讓我的動作綁定模型時,我從ajax發佈(通過jQuery)。ASP.Net MVC模型不會綁定在ajax後
型號:
public class NoteEditViewModel
{
public bool AddMode { get; set; }
public int ID { get; set; }
public int PersonID { get; set; }
public string Note { get; set; }
public NoteEditViewModel()
{
}
}
操作:
[HttpPost]
public ActionResult Edit(NoteEditViewModel note)
{
...
}
JS:(實際上打字稿)
$.ajax({
url: this.options.editUrl,
method: 'POST',
data: JSON.stringify(this.convertFormToJSON(this.options.noteFormElement)),
//data: $(this.options.noteFormElement).serialize(),
//data: JSON.stringify({
// AddMode: $("#AddMode").val(),
// ID: $("#ID").val(),
// PersonID: $("#PersonID").val(),
// Note: $("#Note").val()
//}),
//dataType: 'json',
//traditional:true,
//contentType: 'application/json; charset=utf-8',
success: (partialResult) => {
this.options.noteModalElement.modal('hide');
}
});
convertFormToJSON(form : JQuery) {
var array = form.serializeArray();
var json = {};
jQuery.each(array, function() {
json[this.name] = this.value || '';
});
return json;
}
你可以看到我在這裏嘗試。該操作將收到模型的空實例或爲null。
我也設法讓這與自定義ModelBinder的工作,即:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var body = controllerContext.RequestContext.HttpContext.Request.Form[0];
var model = JsonConvert.DeserializeObject<NoteEditViewModel>(body);
return model;
}
這可能不是最好/最安全的,但至少它的工作原理。
我看不出我在這裏做了什麼錯誤,但爲每個模型創建模型綁定器似乎很瘋狂。非阿賈克斯帖子似乎工作正常。
感謝
嘗試'數據:JSON.stringify({注:this.convertFormToJSON(this.options.noteFormElement})),' – Developer