无法弄清楚Html编码的用法

时间:2017-01-22 02:58:39

标签: asp.net-mvc razor html-encode

我正在研究MVC Web应用程序。我有Razor和JavaScript的页面组合。

剃刀:

@{
    ViewBag.Title = "Edit";
    string initialImage = "<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>";
}

JavaScript的:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: [@initialImage],

我想要的是:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: ["<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>"],

我得到的(在源视图中)是:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: [&lt;img src=&#39;/Site_Data/BIO/Bio.jpg&#39; title=&#39;BIO&#39;&gt;],

我尝试了许多HtmlEncode和HtmlDecode的组合(在Razor和JavaScript部分都有),但无法理解。 请指教。谢谢!

2 个答案:

答案 0 :(得分:1)

默认情况下,asp.net mvc将对您的字符串进行编码。使用未编码的字符串使用Html.Raw(string):

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: ["@Html.Raw(initialImage)"],

答案 1 :(得分:1)

Html.Raw在不进行任何html编码的情况下呈现给出的内容,  所以

@Html.Raw(initialImage);

将呈现为

<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>

在你的js中你需要用双qoutes编码它:

<script type="text/javascript">
    $("#Photos").fileinput({
        initialPreview: ["@Html.Raw(initialImage)"],

但是,当您在其中编码字符时,例如ViewBag.Something = "&gt;";,原始版本为&gt;.要回到实际的html,您需要

Html.Raw(HttpUtility.HtmlDecode(EncodedContent));