相关疑难解决方法(0)

如何在没有表单的情况下将字符串数组发布到ASP.NET MVC Controller?

我正在创建一个小应用程序来自学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"...

有小费吗?

asp.net-mvc jquery json

180
推荐指数
6
解决办法
21万
查看次数

通过GET将JSON数组传递给MVC Web API

我知道这个主题有很多答案,但找不到我的问题的解决方案.我有一个ASP.NET MVC Web API,如下所示:

    [HttpGet]
    public IList<Country> GetCountryList(List<long> idList)
Run Code Online (Sandbox Code Playgroud)

我试过这样称呼它:

    $.ajax({
        dataType: "json",
        data: JSON.stringify({idList: listOfIds}),            
        type: "GET",
        url: "api/v1/util/CountryList",
        success: function (result) {
            alert(result);
        }
    });
Run Code Online (Sandbox Code Playgroud)

然后,URL如下所示:

https://localhost/supertext/api/v1/util/CountryList?{%22idList%22:[46,14,62,83,120]}
Run Code Online (Sandbox Code Playgroud)

替代方案:

    $.ajax({
        dataType: "json",
        data: {
            idList: JSON.stringify(listOfIds),
        }          
        type: "GET",
        url: "api/v1/util/CountryList",
        success: function (result) {
            alert(result);
        }
    });
Run Code Online (Sandbox Code Playgroud)

网址:

https://localhost/supertext/api/v1/util/CountryList?idList=%5B46%2C14%2C62%2C83%2C120%5D
Run Code Online (Sandbox Code Playgroud)

两种方法都不起作用.

我是否真的必须以字符串形式发送和接收它或使用POST?

asp.net-mvc jquery json asp.net-web-api

27
推荐指数
1
解决办法
5万
查看次数

标签 统计

asp.net-mvc ×2

jquery ×2

json ×2

asp.net-web-api ×1