使用html.ActionLink时,如何在我的网址中添加“#”

时间:2013-05-16 21:35:31

标签: asp.net-mvc asp.net-mvc-4 razor actionlink

这是我的html.ActionLink:

 @Html.ActionLink("Comment", "Comment", new { id = item.NewsId, title = item.Title + "#disqus_thread" })

它给了我以下网址:

http://localhost:62394/Home/Comment/5008/Iran%20women%20barred%20from%20presidency%23disqus_thread

而不是"#"它会生成"%23"

我怎样才能确保它变成这样:

`

http://localhost:62394/Home/Comment/5008/Iran%20women%20barred%20from%20presidency#disqus_thread

很多人都非常感谢!

6 个答案:

答案 0 :(得分:3)

你应该像这样使用Url.Action

<a href="@Url.Action("Comment", new { id = item.NewsId, title = item.Title })#disqus_thread">Comment</a>

我相信它更简单,更清洁,更强大,更安全。

答案 1 :(得分:2)

试试这个: -

将ActionLink转换为字符串使用URLDecode并将其更改为将其呈现为Html.Raw。

@Html.Raw(HttpUtility.UrlDecode(Html.ActionLink("Comment", "Comment"
, new { id =  
 item.NewsId, title = item.Title + "#disqus_thread" }).ToString()))

答案 2 :(得分:0)

当我们在请求的url的查询字符串中传递特殊字符时,除非正确编码,否则可能会导致错误。这些特殊字符可以使用字符的十六进制值而不是字符本身来处理。

所以不要使用

@Html.ActionLink("Comment", "Comment", new { id = item.NewsId, title = item.Title + "#disqus_thread" })

使用十六进制值%23

@Html.ActionLink("Comment", "Comment", new { id = item.NewsId, title = item.Title + "%23disqus_thread" })

我希望这对你有帮助..

答案 3 :(得分:0)

我遇到了同样的问题,但它是在DevExpress Grid Link中。这是我能够解决它的唯一方法。

@Html.ActionLink("Comment", "Comment", new { id = item.NewsId, title = item.Title + "#disqus_thread" }).ToString().Replace("%23", "#")

答案 4 :(得分:0)

我们假设你必须创建指向Bootsrap 4 Tab的URL,它只有两个标签。

@Html.Raw(HttpUtility.UrlDecode(@Html.ActionLink("My second TAB", "Index#second", "Home", null, new { @class = "btn-link" }).ToString())) 

所以最终的网址看起来像

  

http://localhost:62959/Home/Index#second

答案 5 :(得分:-1)

您应该在插入之前解码URL:

@HttpUtility.UrlDecode(Html.ActionLink("Comment", "Comment", new { id = item.NewsId, title = item.Title + "#disqus_thread" }))