我认为我有以下内容:
<td><a href="/Crs/Main/?Txt=How does <i>this</i> work>How it works</a></td>
我相信我需要使用HTML Encode。在这种情况下我该怎么做。
答案 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
构建它,然后在链接后附加。