【问题标题】:ASP Core how to use anchor tag helper with Get action?ASP Core 如何将锚标记助手与 Get 操作一起使用?
【发布时间】:2017-09-04 16:40:56
【问题描述】:

如何使用锚标签助手生成像“www.example.com/cars/1/slug”这样的网址?

[Route("cars")]
 public class CarsController: Controller
   {
   [HttpGet("{id}/{slug?}")]
 public IActionResult Get(int id, string slug = "static-slug")
    {
           ...

在我看来,我是这样写的:

    <a  asp-controller="cars"  asp-route-id="@ResultSearch.CarId" asp-route-slug="@ResultSearch.Slug">

生成这个

http://example.com/cars/cars?id=1072&slug=slug

我或多或少遵循了宁静的设计,我无法将 Get 操作命名为“汽车”,因为我已经使用此名称定义了另一条路线,以显示汽车部分。我正在处理的路线是显示特定汽车的详细信息。

【问题讨论】:

  • 你试过加asp-action="Get"吗?

标签: asp.net asp.net-core webserver url-routing


【解决方案1】:

你需要指定动作,除非有动作,否则找不到动作:

<a asp-action="Get" asp-controller="Cars" asp-route-id="@ResultSearch.CarId" asp-route-slug="@ResultSearch.Slug">

【讨论】:

  • 我最终会得到这个:www.example.com/cars/get/1/slug 我想要这个 www.example.com/cars/1/slug。 get 将打破“友好 url”的完美主义。我不买“友好 url”这个东西,但在我看来,大多数 Web 开发人员都同意这个想法。友好的 url 提供了为不存在的产品生成虚假 url 的机会,因此它们在 Google 上获得结果并显示类似的产品,但不是 Ebay 所描述的“友好 url”经常使用它的产品!
  • URL 中不应包含get。对我来说,链接变为http://localhost:33215/cars/1072/some-slug。您需要指定操作,以便它可以找到您要链接到的操作。然后它使用你在属性中定义的东西来生成 URL。
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 2018-12-24
  • 2019-05-28
相关资源
最近更新 更多