如何解决如何结合使用asp-all-route-data和查询字符串中的id列表
在ASP.NET中,asp-all-route-data
非常适合将变量传递到锚标记中。但是现在我试图添加一个ID列表,但运气不佳。 asp-all-route-data
接受一个IDictionary ?myParams=1&myParams=2
之类的查询字符串的列表(由ASP.NET out of the box model binding决定)。
var myParams = new List<int> {0,1,2};
var routeData = new Dictionary<string,string>();
foreach (var myParam in myParams)
{
routeData.Add(nameof(myParams),myParam.ToString());
}
我尝试在重复的键异常中添加结果。
var myParams = new List<int> {0,string>();
for (var i = 0; i < myParams.Count; i++)
{
var myParam = myParams[i];
routeData.Add($"{nameof(myParams)}{i}",myParam.ToString());
}
没有模型绑定。
这是完整性的剃刀:
<a asp-route="@routeName" asp-all-route-data="@routeData">click me</a>
解决方法
在进一步研究这个问题的同时,我实际上找到了答案,因此将在这里分享。
事实证明我离我很近,但是没有一个命名约定
$"{nameof(myParams)}{i}"
应该是
$"{nameof(myParams)}[{i}]"
(如Microsoft documentation for model binding中所述。
完整代码示例:
var myParams = new List<int> {0,1,2};
var routeData = new Dictionary<string,string>();
for (var i = 0; i < myParams.Count; i++)
{
var myParam = myParams[i];
routeData.Add($"{nameof(myParams)}[{i}]",myParam.ToString());
}
哪个查询字符串(基于我设置的路由)为:
?myParams[0]=0&myParams[1]=1&myParams[2]=2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。