将表单数据和字符串列表发布到控制器

时间:2019-04-17 19:30:23

标签: javascript jquery ajax asp.net-mvc

我正在尝试向控制器发布完整的表单和单独的字符串列表。表单绑定到模型,但字符串列表未绑定到控制器中的字符串列表,而是在列表中显示为单个字符串。

var List = "one,two,three";
var dataToPost = $('#Form').serialize() + "&Words=" + JSON.stringify(List);
$.ajax({
   type: "POST",
   url: '/Home/Open/',            
   data: dataToPost,
   dataType: "json",
   success: function () {
      alert('ok');
   },
   error: function () {
      alert('error');
   }
});

这是我的MVC控制器动作:

[HttpPost]
public IActionResult Open(DataModel Model, List<string> Words)
{
   return View(Model);
}

2 个答案:

答案 0 :(得分:2)

这对我来说很好:

var List = ["one", "two", "three"];
var dataToPost = $('#Form').serializeArray();
List.forEach(function (value, index) {
    dataToPost.push({ name: 'Words[]', value: value });
});

答案 1 :(得分:0)

请尝试以下代码,我刚刚修改了您的AJAX调用。

var List = "one,two,three";
    var dataToPost = $('#Form').serialize();
    $.ajax({
        type: "POST",
        url: '/Home/Open/',
        data: { fx: dataToPost, Words: List },
        dataType: "json",
        success: function () {
            alert('ok');
        },
        error: function () {
            alert('error');
        }
    });

将控制器代码更改为以下

 [HttpPost]
    public IActionResult Open(FormCollection fx, string Words)
    { 
    var lstWords = Words.Split(',').ToList();
        var val = fx["elementname"]//here you can pass input element name to get value
       return View(Model);
    }