2

这是我的 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

任何形式的帮助都非常感谢!

4

6 回答 6

5

您应该像这样使用Url.Action

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

我相信它更简单、更清洁、更安全

于 2013-05-16T23:57:30.143 回答
3

试试这个:-

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

@Html.Raw(HttpUtility.UrlDecode(Html.ActionLink("Comment", "Comment"
, new { id =  
 item.NewsId, title = item.Title + "#disqus_thread" }).ToString()))
于 2013-05-16T21:52:37.277 回答
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" })

我希望这可以帮助你..

于 2013-05-17T06:51:37.813 回答
0

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

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

于 2016-01-25T17:45:47.227 回答
0

假设您必须创建指向只有两个选项卡的 Bootsrap 4 选项卡的 URL。

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

所以最终的 URL 看起来像

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

于 2018-05-15T01:43:29.103 回答
-1

您应该在插入 URL 之前对其进行解码:

@HttpUtility.UrlDecode(Html.ActionLink("Comment", "Comment", new { id = item.NewsId, title = item.Title + "#disqus_thread" }))
于 2013-05-16T21:40:19.723 回答