asp.net-mvc - 如何将数组转换为查询字符串发送?
问题描述
在我看来,我有复选框和显示的一些数据,每行上都有按钮来批准或拒绝提出的请求。
我想将整数数组发送到我的操作方法,但这不能通过仅将其发送到操作查询参数来完成,如下图所示:
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[]?
解决方案
选项 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)
{}
推荐阅读
- javascript - 当我使用 setState 回调来 toggleDropdown 我的下拉菜单在选择项目后打开
- java - HttpServletRequest getParameterMap - 单独获取表单参数
- c++ - 弗兰克·卢纳 (Frank Luna) 对他的书“使用 DirectX12 进行 3D 游戏编程”的介绍中的盒子示例的问题
- python - 如何通过css选择器查找包含属性和文本的元素
- python - 使用 Azure CLI、Rest API 或 Python 在 Azure ADLS gen2 中复制文件
- python - 具有超过 3 列的 ColumnTransformer
- overlap - 如何控制kmz中多边形的重叠顺序
- azure - 如何在发布管道中将文件保存到 Azure 存储帐户?
- python - INFO:tensorflow:Error 报告给 Coordinator:
,发现 2 个根错误 - javascript - 填充输入字段时启用 p:commandLink