MVC链接HTML编码

时间:2015-12-01 02:56:09

标签: asp.net-mvc

我认为我有以下内容:

 <td><a href="/Crs/Main/?Txt=How does <i>this</i> work>How it works</a></td>

我相信我需要使用HTML Encode。在这种情况下我该怎么做。

2 个答案:

答案 0 :(得分:1)

在这种情况下,您需要HTML编码(以保留HTML标记)以及URL编码(对空格进行编码,以便它不会将Txt变量截断为{{1 }}

How does

服务器端,然后解码值:

<a href="/Crs/Main/?Txt=@Url.Encode(Html.Encode("How does <i>this</i> work"))">How it works</a>

或者,您可以使用var txtValue = HttpUtility.HtmlDecode(HttpUtility.UrlDecode(txt)) 帮助程序(如另一个答案中所述),它将自动对您的参数进行URL编码,但您仍需要对此值进行显式HTML编码,如下所示:

@Html.ActionLink

或者您可以通过使用@Html.ActionLink("How it works", "Main", "Crs", new { Txt = Html.Encode("How does <i>this</i> work") }, null) 属性对其进行修饰来告诉操作信任所有输入,这将取消对显式HTML编码参数的需要,但可能是安全问题。

答案 1 :(得分:0)

使用Html.ActionLink使用HttpUtility.Encode始终对链接文本进行编码。

@Html.ActionLink("How it works", "Main", "Crs", new { @Txt = "How does <i>this</i> work"}, new { })

或者,您可以使用Url.Action来形成链接,并使用您必须传递给参数的参数,使用Html.HtmlDecode构建它,然后在链接后附加。