首页 > 解决方案 > 如何将数组转换为查询字符串发送?

问题描述

在我看来,我有复选框和显示的一些数据,每行上都有按钮来批准或拒绝提出的请求。

我想将整数数组发送到我的操作方法,但这不能通过仅将其发送到操作查询参数来完成,如下图所示:

在此处输入图像描述

public int[] Ids 
{
  get { return new int[] { 1, 2, 3 }; }
  set {}
}
public ActionResult Approval([ModelBinder(typeof(IntArrayModelBinder))] int[] ids)
{
    ...
    return View(...);
}

@Html.ActionLink("Approve", "Approval", new {id = item.Ids, approvalAction = "approve"})

如何实现要检查的复选框和批准/拒绝操作链接的悬停将显示 url../ids=1&ids=2&ids=3而不是System.Int32[]?

标签: asp.net-mvc

解决方案


选项 1:将您的数组作为逗号分隔的字符串发送,然后在您的操作中拆分它们,如下所示:

@Html.ActionLink("Approve", "Approval", new { id = string.Join("," , Ids), approvalAction = "approve" } )

你的行动:

public ActionResult YourAction(string id , string approvalAction)
{
    var ids = id.Split(',');
    //rest of your action method business
}

选项 2: 实现您的确切网址的另一种方法是创建您的网址,如下所示:

var baseUrl = Url.Action("YourAction", "YourController", null, Request.Url.Scheme);
var uriBuilder = new UriBuilder(baseUrl);
uriBuilder.Query = string.Join("&", Ids.Select(x => "ids=" + x));
string url = uriBuilder.ToString();
url += "&approvalAction=approve"

你的行为会是这样的:

public ActionResult YourAction(int[] ids , string approvalAction)
{}

推荐阅读