MVC的前端和后端的Model Binding

时间:2023-03-08 18:35:33
MVC的前端和后端的Model Binding

1.前端提交JSON 字符串

{"id":13,"title":"这里是标题33","day":"2018-8-16","status":0,"arr":[{"type":"r","quest":"333","q1":"3","q2":"3","q3":"3"},{"type":"c","quest":"444","q1":"4","q2":"4","q3":"4"},{"type":"t","quest":"5"}]}
            $.ajax({
url: "/survey/post",
method:"post",
data: json,
contentType: "application/json",
success: function (data) {
console.log(data.status);
}
})

后端MVC controller ( version<=5) , 如果是WebAPI, 则要加上[FromBody]修饰参数

    public class SurveyDTO
{
public string id { get; set; }
public string title { get; set; }
public DateTime day { get; set; }
public string status { get; set; }
public SurveyItem[] arr { get; set; }
}
public class SurveyItem {
public string type { get; set; }
public string quest { get; set; }
public string q1 { get; set; }
public string q2 { get; set; }
public string q3 { get; set; }
}
[HttpPost]
public ActionResult Post(SurveyDTO data)
{}

JSON带有数组的话, 通常不能直接用EntityFramework的实体.要重新定义.

2. 前端使用表单提交

$.post('/survey/postForm', $('#form').serialize(), function (json) {
if (json.isSuccess) { } });

$.ajax({
url: "/survey/postForm",
method: "post",
data: "id=" + key + "&title=" + title + "&day=" + date + "&status=" + sta + "&arr=" + JSON.stringify(this.storageArr),
success: function (data) {
console.log(data.status);
}
})

 

后端使用Formcollection 接受参数

        [HttpPost]
public ActionResult Post(FormCollection form)
{
var json = new { status = 0 };
return Json(json); }

  

相关文章