【问题标题】:Combine asp-route-id with asp-route-all-data结合 asp-route-id 与 asp-route-all-data
【发布时间】:2018-03-22 05:46:50
【问题描述】:

有什么办法可以做到吗?

<a class="btn btn-info" asp-action="ActionName" asp-route-id="@item.ID"
                       asp-all-route-data="parms" >Action</a>

这会生成以下链接:

sitename.com/controller/action?parm1=parm1&parm2=parm2

等等。我希望它生成这个:

sitename.com/controller/action/{id}?parm1=parm1&parm2=parm2

似乎您无法将 route-id 与 asp-route-all-data 结合使用。它是表格上的链接,因此我的 ID 随每一行而变化,其余过滤器(搜索字符串、页面、排序等)不会改变。如果这可行,将节省大量复制和粘贴。

在写这篇文章时,我意识到我可能会创建一个带有项目字典和模型的 IEnumerable 的 Viewmodel,而不仅仅是按原样使用我的模型。有没有其他(更简单)的方法来完成这项工作?

【问题讨论】:

  • 一种选择可能是在parms 中包含一个{ id, "" } 项目,然后在您的循环中在每次迭代中更新它-parms["id"] = item.Id;(并删除asp-route-id
  • 这对斯蒂芬有效。好建议。我想到了我在 SO 上提出的所有问题,您已经回答了 90% 的问题。如果您对这些东西有任何想法,我仍然没有找到我的 yahoo Oauth2 问题的答案。呵呵。再次感谢
  • 它可以工作,但不是那么优雅。我不确定他们为什么选择不将任何asp-route-{property} 合并到asp-all-route-data 字典中,下周将查看源代码。

标签: asp.net-mvc asp.net-core-mvc razor-pages asp.net-core-tag-helpers


【解决方案1】:

将“asp-all-route-data”属性放在“asp-route-id”之前可以解决问题。

<a class="btn btn-info" asp-action="ActionName" 
        asp-all-route-data="parms"             
        asp-route-id="@item.ID">Action</a>

并生成如下链接:

sitename.com/controller/action/{id}?parm1=parm1&parm2=parm2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多