【问题标题】:How Do I Pass an Array of Values via Anchor Tag Helper?如何通过 Anchor Tag Helper 传递一组值?
【发布时间】:2018-08-09 17:46:37
【问题描述】:

我正在使用Asp.Net Core 2.1Pages

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>

【问题讨论】:

  • 您的问题完全不清楚。您没有传递 anything ,因为您的操作正在寻找名为 v 的东西,但您发送的所有内容都是 status (两次,这没有意义)。你试过什么?什么不工作?具体一点。
  • @ChrisPratt 将代码粘贴到此处时输入错误。修好了。
  • @ChrisPratt 除了错字,我不需要进一步解释。我想传入A & B 作为状态参数的数组。
  • 您是否要在一个参数中同时发送AB?就像在包含AB 的数组中一样?如果是这样,你应该只做asp-route-status="new[] { A, B }"
  • @ChrisPratt 没错。我想同时发送AB 作为status 的值。不幸的是,您的建议不起作用。如果我按照您的建议进行操作,myValues 中将有 1 个项目,其值实际上是 new[] { A, B }

标签: c# asp.net-core .net-core asp.net-core-2.0 asp.net-core-tag-helpers


【解决方案1】:

这似乎是不可能的 - 传递给asp-route-status 的值应该是一个字符串或一个值,然后无论如何它都会被转换为一个字符串。您可以在source code 中看到这一点,其中RouteValues 属性是&lt;string, string&gt; 的字典。

让我们看一下您的第一个示例,如下所示:

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

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

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

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

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

我发现this Github 问题,最近的评论 (2017-11-24) 询问如何使用标签助手实现此目的,但截至今天 (2018-08-10) 尚未回答该问题)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多