将数据对象从ajax查询返回到控制器

时间:2017-02-21 20:56:52

标签: ajax asp.net-mvc

我试图从表单访问数据并将其传递给MVC中的控制器。

当我按ID获取元素并以字符串传递时,我成功传递了数据:

这有效:

    data: JSON.stringify({ 
         'Answer0': $("#Answer0").val(), 
         'Answer1': $("#Answer1").val(), 
         'Question0': $("#Question0").val() 
    }), 

但是我想将数据作为viewmodel。当我将请求指定为:

    data: JSON.stringify($('#' + formDiv).serializeObject()),

它将填充视图模型,但是有些字段未绑定到ViewModel,我希望将其与序列化表单一起传递。我试过添加它们,但如果我传递序列化表单对象和附加字符串,它们似乎不会进入。

    function clickedNext(e, formDiv) {
    var sURL = '@Url.Action("SurveySave", "Home")'
    $.ajax({
        url: sURL,
        type: "POST",
        contentType: 'application/json',
        data: JSON.stringify($('#' + formDiv).serializeObject(), { 'Answer0': $("#Answer0").val(), 'Answer1': $("#Answer1").val() }),
        success: function (data) {
            //$('#InvestigationStatus').html(data);
        }
    });

控制器

        [HttpPost]
    public ActionResult SurveySave(SurveyViewModel s, string Answer0, string Answer1)

1 个答案:

答案 0 :(得分:0)

我觉得你不能把两个对象放在JSON.stringify();

里面

也许尝试类似的事情:

var bothObjects = {
    $('#' + formDiv).serializeObject(),
    { 'Answer0': $("#Answer0").val(), 'Answer1': $("#Answer1").val() }
}
...

    JSON.stringify(bothObjects),