我正在创建一个小应用程序来自学ASP.NET MVC和JQuery,其中一个页面是一个项目列表,其中一些可以选择.然后我想按下一个按钮并使用JQuery的Post函数向我的控制器发送一个List(或类似的东西),其中包含所选项目的ID.
我设法得到一个数组,其中包含所选元素的ID,现在我想发布它.我可以这样做的一种方法是在我的页面中有一个虚拟表单,带有隐藏值,然后使用所选项目设置隐藏值,并发布该表单; 不过,这看起来很狡猾.
有没有更简洁的方法来实现这一点,通过将阵列直接发送到控制器?我尝试了一些不同的东西,但看起来控制器无法映射它接收的数据.这是迄今为止的代码:
function generateList(selectedValues) {
var s = {
values: selectedValues //selectedValues is an array of string
};
$.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}
Run Code Online (Sandbox Code Playgroud)
然后我的控制器看起来像这样
public ActionResult GenerateList(List<string> values)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我设法获得的只是控制器参数中的"null"...
有小费吗?
JQuery代码:
//This passes NULL for "CategoryID", "CategoryName", "ProductID", "ProductName"
$("#btnPost").click(function () {
var CategoryModel = {
CategoryID: 1,
CategoryName: "Beverage"
};
var ProductModel = {
ProductID: 1,
ProductName: "Chai"
};
var data1 = {};
data1["cat"] = CategoryModel;
data1["prd"] = ProductModel;
var jsonData = JSON.stringify(data1);
$.ajax({
url: url + '/Complex/ModelTwo', //This works but property values are null
type: 'post',
dataType: 'json',
data: { "cat": CategoryModel, "prd": ProductModel }, //jsonData,
cache: false,
success: function (result) {
alert(result);
},
error: function (xhr, ajaxOptions, …