我正在使用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>
答案 0 :(得分:2)
这似乎不可能-传递给asp-route-status
的值应该是字符串,或者是无论如何都将其转换为字符串的值。您可以在source code中看到它,其中RouteValues
属性是<string, string>
的字典。
让我们看看您的第一个示例,如下所示:
<a asp-page="/MyPage" asp-route-status="A" asp-route-status="B">Click</a>
我正在使用Visual Studio及其所有的智能知识-当我使用此代码段时,通过绿色的波浪状和工具提示来警告我“属性'asp-route-status'已经存在。” < / em>。最终结果是,实际上只有指定的第一个值才传递到查询字符串中。
使用任何一种有效的数组方法,status
的生成值就是数组{<1>}的生成值- System.String%5B%5D 。
看来,要实现您想要的目标,您将需要使用传统的ToString
方法。看起来像这样:
UrlHelper
我发现了this的Github问题,其中最近的评论(2017-11-24)询问如何使用标签帮助器实现此目标,但截至今天(2018-08年)尚未回答该问题。 -10)。