为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 Anchor Tag Helper 传递一组值?

如何通过 Anchor Tag Helper 传递一组值?

C#
动漫人物 2021-11-21 18:13:46
我正在使用 Asp.Net Core 2.1 Pagespublic async Task OnGetAsync([FromQuery(Name = "status")] string[] myValues){}我试图从 传入一组值anchor tag helper,但我收到的myValues只是一个项目。如果我手动输入要镜像的查询字符串MyRoute?myValues=A&myValues=B,它会按预期工作。我尝试了以下但没有成功。<a asp-page="/MyPage" asp-route-status="A" asp-route-status="B">Click</a><a asp-page="/MyPage" asp-route-status="new [] { A, B }">Click</a><a asp-page="/MyPage" asp-route-status="@(new [] { A, B })">Click</a>@{  var list = new string[] { "A", "B" };}<a asp-page="/MyPage" asp-route-status="@list">Click</a>
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

这似乎是不可能的 - 传入的值asp-route-status预计是一个字符串或一个值,然后它无论如何都会转换为一个字符串。您可以在源代码中看到这一点,其中的RouteValues属性是<string, string>.

让我们看看你的第一个例子,它看起来像这样:

<a asp-page="/MyPage" asp-route-status="A" asp-route-status="B">Click</a>

我正在使用具有所有智能感知魔法的 Visual Studio - 当我使用此代码片段时,我会通过绿色波浪线和工具提示警告“属性 'asp-route-status' 已经存在。” . 这里的最终结果是只有指定的第一个值实际传递到查询字符串中。

使用任何一种有效的数组方法,生成的值status只是ToString数组的 a - System.String%5B%5D

看来,为了实现您想要的,您将需要退回到传统UrlHelper方法。这是它的样子:

<a href="@Url.Page("/MyPage", new { status = new [] { "A", "B" } })">Click</a>

我发现了这个Github 问题,其中最近的评论 (2017-11-24) 询问如何使用标签助手来实现这一点,但截至今天 (2018-08-10),该问题尚未得到解答。


查看完整回答
反对 回复 2021-11-21
  • 1 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信