我希望有一个网址链接:/帖子/帖子/ 1#评论
其中:帖子 - 控制器名称,动作后名称,1 - id参数
我在我的视图中使用以下代码:
<a href="@Url.Action("Post", "Posts", new { id = @item.PostId + "#comments" })">Comments</a>
因此我有:/帖子/帖子/ 1%23评论
如何通过&#39;#&#39; char而不是&#34;%23&#34;?
答案 0 :(得分:2)
<a href="@Url.Action("Post", "Posts", new { id = item.PostId })#comments" ...></a>
#
用于散列,因此将其发送到服务器端(Url.Action
预期)意味着对其进行编码。如果您希望补充客户端体验,请不要将其包含在Url.Action
中(或创建一个特殊的重载,接受片段标识符并将其输出为未触及)。
答案 1 :(得分:1)
要将该数据作为操作的一部分,%23
是正确的;如果#
表示片段 - ,则它不属于“操作”。 url中的#
表示客户端片段 - 通常用于通过id
跳转到文档中的元素(服务器永远不会在URL中的#
之后看到任何内容)< / p>
另请参阅:c#(查看网址)
答案 2 :(得分:0)
您还可以将Html.ActionLink
与正确的oveload(fragment
参数)一起使用,而不是手动构建链接。
@Html.ActionLink(
"Comments",
"Post",
"Posts", null, null,
"comments", // fragment part
new { id = @item.PostId },
new { })