【问题标题】:Display web.config setting as HTML将 web.config 设置显示为 HTML
【发布时间】:2015-12-08 17:49:28
【问题描述】:

我的 web.config 文件有以下内容:

<applicationSettings>
    <MyProject.Properties.Settings>
      <setting name="TermsAndConditions" serializeAs="String">
        <value>&lt;p&gt;
                    My text here...
               &lt;/p&gt;
        </value>
      </setting>
    </MyProject.Properties.Settings>
</applicationSettings>

然后在我的控制器中:

ViewBag.terms = Properties.Settings.Default.TermsAndConditions;

最后,在我的观点中:

<div class="col-lg-2">
    @ViewBag.terms
</div>

网页上显示的内容实际上是下面的内容,而不是 &lt;p&gt; 标记被转换为 HTML:

<p> My text here... </p>

知道如何将标签转换为 HTML 吗?

【问题讨论】:

    标签: c# html asp.net-mvc


    【解决方案1】:

    您不应该使用 web.config 来存储 HTML。使用单独的 XML 文件。

    例如:

    <SettingsHtml>
       <Value>
           <![CDATA[<p> My text here... </p>]]>
       </Value>
    </SettingsHtml>
    

    将 HTML 包装在 CDATA 部分将确保您无需在内容输出之前对其进行 HTML 编码。

    <div class="col-lg-2">
        @ViewBag.terms
    </div>
    

    默认情况下,HTML 会对 terms 值进行编码。

    使用@Html.Raw():

    <div class="col-lg-2">
        @Html.Raw(ViewBag.terms)
    </div>
    

    【讨论】:

    • 不幸的是,我的项目要求在 web.config 文件中有这个。使用@Html.Raw() 解决了我遇到的问题。干杯!
    【解决方案2】:

    您已经对 XML 中的数据进行了 html 编码,因此您需要 decode it。您还需要使用 Html.Raw 来输出 HTML:

    ViewBag.terms = HttpUtility.HtmlDecode(Properties.Settings.Default.TermsAndConditions);
    
    <div class="col-lg-2">
        @Html.Raw(ViewBag.terms)
    </div>
    

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      相关资源
      最近更新 更多