将字符串数组传递给动作

时间:2018-10-03 23:09:19

标签: c# asp.net-mvc

我无法通过HTTP传递字符串数组来执行我的操作。我的HTTP GET可以这样做:

http://www.example.com/Add?id=1&id=2&id=3&id=4

我的代码如下

[HttpGet]
public ActionResult Add(params string[] id) 
{ 
    // I expect this:
        // id = string[]{"1","2","3","4"}

    // I get this: 
        // id always comes in as {string[1]}... aka. string array with one element
        // id[0] is "" - aka. the first element is always an empty string
}

我的HTTP Get可能进入的方式:

  1. http://www.example.com/Add?id=1
  2. http://www.example.com/Add?id=1&id=2&id=3&id=4
  3. http://www.example.com/Add/1

如何用一种控制器方法处理此问题?

我尝试过的其他事情:

  • 重载方法(不能重载控制器方法)
  • 将ID作为逗号分隔的字符串传递,该字符串虽然有效,但很容易破解

2 个答案:

答案 0 :(得分:0)

您可以使用Request.QueryString集合。

答案 1 :(得分:-1)

这可能无法回答您的问题,因为您可能对jQuery- Ajax解决方案不感兴趣。但是那些可能会来这里寻找答案的人,是我实现它的方法。

Jquery和Ajax:

$.ajax({
    url: '/Controller/Method?id=2&id=3',
    type: 'GET',
    datatype: "json",
    processData: false,
    contentType: "application/json; charset=utf-8",
    async: true,
    success: function(response){},
    error: function(response){}
});

C#控制器:

[HttpGet]
public ActionResult ExportRecords(string[] id)
{
    foreach(string value in  id)
    {
        System.Diagnostics.Debug.Writeline(value);
    } 
     return View();
}