Razor默认对字符串进行编码。没有编码的渲染有什么特殊的语法吗?


当前回答

对于ActionLink,它通常使用HttpUtility。对链接文本进行编码。 这样的话 你可以使用 HttpUtility.HtmlDecode (myString) 它为我工作时使用HtmlActionLink解码字符串,我想传递。例如:

@Html ActionLink (HttpUtility . HtmlDecode(“myString”、“ActionName……)

其他回答

你也可以使用WriteLiteral方法

因为ASP。NET MVC 3,你可以使用:

@Html.Raw(myString)

对于ActionLink,它通常使用HttpUtility。对链接文本进行编码。 这样的话 你可以使用 HttpUtility.HtmlDecode (myString) 它为我工作时使用HtmlActionLink解码字符串,我想传递。例如:

@Html ActionLink (HttpUtility . HtmlDecode(“myString”、“ActionName……)

以及已经提到的@Html.Raw(字符串)方法,如果你输出一个MvcHtmlString,它将不会被编码。在向HtmlHelper添加自己的扩展时,或者从视图模型返回您知道可能包含html的值时,这可能很有用。

例如,如果你的视图模型是:

public class SampleViewModel
{
  public string SampleString { get; set; }
  public MvcHtmlString SampleHtmlString { get; set; }
}

对于Core 1.0+(和MVC 5+)使用HtmlString

public class SampleViewModel
{
  public string SampleString { get; set; }
  public HtmlString SampleHtmlString { get; set; }
}

then

<!-- this will be encoded -->
<div>@Model.SampleString</div>
<!-- this will not be encoded -->
<div>@Html.Raw(Model.SampleString)</div>
<!-- this will not be encoded either -->
<div>@Model.SampleHtmlString</div>
@(new HtmlString(myString))