如何将Ajax调用参数绑定到控制器模型参数

时间:2019-01-31 16:07:10

标签: c# ajax model-view-controller data-binding

我不知道我在这里想念的是什么。我试图填充一个Jquery对象,并将该对象发送到具有Model作为参数的控制器,并使其正确绑定。

我知道Ajax调用是有效的,因为我在Controller中命中了断点。

这是我的Jquery,用于创建将通过ajax发送的对象

    var testObj = {};
    testObj.empNum = '1234';

这是我的Ajax电话:

var url = BASE_URL + "Assessment/testing";
$.post({
    url: url,
    data: {
          test: testObj
          },
    success: function (data) {
               console.log(data)
           },
    dataType: 'JSON'
});

这是我的模特:

public class test
{
    public string empNum { get; set; }
}

我的控制器:

[HttpPost]
public JsonResult testing(test t)
{
    return Json(t, JsonRequestBehavior.AllowGet);
}

我希望控制器中的t包含empNum = 1234的测试模型,但它会继续返回空值。

2 个答案:

答案 0 :(得分:0)

尝试使用此方法将js对象转换为c#模型

$.post({
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(testObj),

或多个参数:

$.post({
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify( {test: testObj} ),

答案 1 :(得分:0)

很抱歉浪费大家的时间,但这是问题所在:

控制器中的这一行的参数为t:

public JsonResult testing(test t)

在我的Ajax调用中,参数名称必须与控制器上的参数名称匹配。所以在这种情况下;测试应该更改为t以匹配控制器

       data: {
          test: testObj
          },