【问题标题】:C# ASP.net, storing and writing HTML with string variablesC# ASP.net,使用字符串变量存储和编写 HTML
【发布时间】:2012-04-25 14:29:18
【问题描述】:

我有一个表单,用户可以在其中输入 YouTube 视频的网址。我的代码解析 url 并创建一个嵌入字符串,该字符串存储在我的数据库中。这看起来像:

string rawQuery = uri.Query;
int index = rawQuery.IndexOf("?");
if (index > 0)
                rawQuery = rawQuery.Substring(index).Remove(0, 1);
id = HttpUtility.ParseQueryString(rawQuery).Get("v");

string embedURL = "<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/" + id + "\" frameborder=\"0\" allowfullscreen></iframe>";

此字符串存储在数据库中,稍后检索并打印到 HTML 页面。但是,当我查看页面源时,输出最终看起来像这样:

&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/AXaoi6dz59A&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;

如何打印此字符串,使其不会转义我的引号和小于/大于符号?

【问题讨论】:

    标签: c# html asp.net-mvc string


    【解决方案1】:
    【解决方案2】:

    如果你使用例如ViewBag来输出视图中的字符串使用

    @Html.Raw(ViewBag.EmbedURL)
    

    这告诉框架不要编码字符串

    【讨论】:

      【解决方案3】:

      当您在页面中写入字符串时,它就会被编码。使用&lt;%= %&gt;服务器标签输出字符串而不编码:

      <%= embedURL %>
      

      您也可以将其包装在 HtmlString 对象中以避免自动编码:

      HtmlString html = new HtmlString(embedURL)
      

      然后你就可以正常输出了:

      <%: html %>
      

      或使用剃须刀:

      @html
      

      您还可以使用Html.Raw 方法将其包装在HtmlString 对象中:

      @Html.Raw(embedURL)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 2014-04-28
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-27
        相关资源
        最近更新 更多