我正在尝试向控制器发布完整的表单和单独的字符串列表。表单绑定到模型,但字符串列表未绑定到控制器中的字符串列表,而是在列表中显示为单个字符串。
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);
}
答案 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);
}