猿问

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

我正在使用 Asp.Net Core 2.1 Pages


public 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>


动漫人物
浏览 228回答 1
1回答

慕容708150

这似乎是不可能的 - 传入的值asp-route-status预计是一个字符串或一个值,然后它无论如何都会转换为一个字符串。您可以在源代码中看到这一点,其中的RouteValues属性是<string, string>.让我们看看你的第一个例子,它看起来像这样:<a&nbsp;asp-page="/MyPage"&nbsp;asp-route-status="A"&nbsp;asp-route-status="B">Click</a>我正在使用具有所有智能感知魔法的 Visual Studio - 当我使用此代码片段时,我会通过绿色波浪线和工具提示警告“属性 'asp-route-status' 已经存在。”&nbsp;.&nbsp;这里的最终结果是只有指定的第一个值实际传递到查询字符串中。使用任何一种有效的数组方法,生成的值status只是ToString数组的 a -&nbsp;System.String%5B%5D。看来,为了实现您想要的,您将需要退回到传统UrlHelper方法。这是它的样子:<a&nbsp;href="@Url.Page("/MyPage",&nbsp;new&nbsp;{&nbsp;status&nbsp;=&nbsp;new&nbsp;[]&nbsp;{&nbsp;"A",&nbsp;"B"&nbsp;}&nbsp;})">Click</a>我发现了这个Github 问题,其中最近的评论 (2017-11-24) 询问如何使用标签助手来实现这一点,但截至今天 (2018-08-10),该问题尚未得到解答。
随时随地看视频慕课网APP
我要回答