TagHelper,用于将路由值作为 link 的一部分传递,格式为 /users/edit/10
TagHelper for passing route values as part of a link with this format /users/edit/10
我需要为我的资源传递一个 ID 作为 URL 的一部分。有什么方法可以使用标签助手将 link 格式化为这样 /users/edit/10 吗?
我在另一个问题上看到了以下示例,但这给了我 user/edit?id=10&foo=bar。不是我真正想要的。 :(
<a asp-action="Edit" asp-route-id="10" asp-route-foo="bar">Edit</a>
下面是我试图实现的实际功能:
[HttpGet]
[Route("[controller]/edit/{blogId:int}")]
public IActionResult BlogEdit(int blogId)
{
Blog blog = _blogRepo.GetById(blogId);
BlogEditViewModel blogEditViewModel = new BlogEditViewModel
{
Title = blog.Title,
Body = blog.Body,
Id = blog.Id
};
ViewBag.Title = "Edit Blog";
return View(blogEditViewModel);
}
我尝试使用下面的 a 标签,但它仍然生成不正确的 link。
<a asp-controller="Blog" asp-action="BlogEdit" asp-route-blogId="11">Edit Blog 11</a>
上面link生成下面的路径
http://localhost:52409/Blog/edit?blogId=11
谢谢!
根据您的意见,将标签助手属性名称从 asp-route-id
修改为 asp-route-blogid
,应该可以了。
鉴于 Attribute-based
路由 可能 的复杂性,很难想出一种方法让 taghelper 渲染 link 像 /blog/edit/11
.
如果上面的link走的是标准路线,那么重现就变得很容易了;但这里不是这样。
那么,怎么办? 命名路由
如果您要像这样定义函数:
HttpGet]
[Route("[controller]/edit/{blogId:int}", Name = "BlogEdit")]
public IActionResult BlogEdit(int blogId)
{
...
}
那么你也可以定义一个 TagHelper link 如下:
<a asp-route="BlogEdit" asp-route-blogId="11">Edit Blog 11</a>
应该呈现以下 link:
<a href="/blog/edit/11">Edit Blog 11</a>
我需要为我的资源传递一个 ID 作为 URL 的一部分。有什么方法可以使用标签助手将 link 格式化为这样 /users/edit/10 吗?
我在另一个问题上看到了以下示例,但这给了我 user/edit?id=10&foo=bar。不是我真正想要的。 :(
<a asp-action="Edit" asp-route-id="10" asp-route-foo="bar">Edit</a>
下面是我试图实现的实际功能:
[HttpGet]
[Route("[controller]/edit/{blogId:int}")]
public IActionResult BlogEdit(int blogId)
{
Blog blog = _blogRepo.GetById(blogId);
BlogEditViewModel blogEditViewModel = new BlogEditViewModel
{
Title = blog.Title,
Body = blog.Body,
Id = blog.Id
};
ViewBag.Title = "Edit Blog";
return View(blogEditViewModel);
}
我尝试使用下面的 a 标签,但它仍然生成不正确的 link。
<a asp-controller="Blog" asp-action="BlogEdit" asp-route-blogId="11">Edit Blog 11</a>
上面link生成下面的路径
http://localhost:52409/Blog/edit?blogId=11
谢谢!
根据您的意见,将标签助手属性名称从 asp-route-id
修改为 asp-route-blogid
,应该可以了。
鉴于 Attribute-based
路由 可能 的复杂性,很难想出一种方法让 taghelper 渲染 link 像 /blog/edit/11
.
如果上面的link走的是标准路线,那么重现就变得很容易了;但这里不是这样。
那么,怎么办? 命名路由
如果您要像这样定义函数:
HttpGet]
[Route("[controller]/edit/{blogId:int}", Name = "BlogEdit")]
public IActionResult BlogEdit(int blogId)
{
...
}
那么你也可以定义一个 TagHelper link 如下:
<a asp-route="BlogEdit" asp-route-blogId="11">Edit Blog 11</a>
应该呈现以下 link:
<a href="/blog/edit/11">Edit Blog 11</a>