如何在 MVC 中通过 url 传递特殊字符 ASP.NET
本文关键字:特殊字符 ASP NET url MVC | 更新日期: 2023-09-27 18:33:24
我想要一个网址链接,例如:/Posts/Post/1#comments
其中:帖子 - 控制器名称,帖子 - 操作名称,1 - id 参数
我在我的视图中使用以下代码:
<a href="@Url.Action("Post", "Posts", new { id = @item.PostId + "#comments" })">Comments</a>
结果我有:/帖子/帖子/1%23评论
如何传递"#"字符而不是"%23"?
您正在寻找:
<a href="@Url.Action("Post", "Posts", new { id = item.PostId })#comments" ...></a>
#
用于哈希,因此将其发送到服务器端(Url.Action
期望)意味着对其进行编码。如果您希望补充客户端体验,请不要将其包含在Url.Action
中(或创建一个特殊的重载,接受片段标识符并原封不动地输出)。
对于该数据成为操作的一部分,%23
是正确的;如果#
表示一个片段 - 它不是"操作"的一部分。url 中的#
表示客户端片段 - 通常用于按id
跳转到文档中的元素(服务器在 url 中的#
之后永远不会看到任何内容)
另请参阅:c#(查看网址)
您也可以使用具有正确 oveload(fragment
参数)的Html.ActionLink
,而不是手动构建链接。
@Html.ActionLink(
"Comments",
"Post",
"Posts", null, null,
"comments", // fragment part
new { id = @item.PostId },
new { })