2012-04-13 73 views
2

我有一个表单,用户可以在其中输入一个URL到YouTube视频。我的代码解析url并创建存储在我的数据库中的嵌入字符串。这看起来像这样:C#ASP.net,用字符串变量存储和写入HTML

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; 

我如何可以打印此字符串,因此,它并没有逃脱我的报价少/大于号?

+0

你想它取消转义 – Jodrell 2012-04-13 08:05:05

回答

1

框架不编码字符串

0

当你在页面中编写字符串时,它就会被编码。使用<%= %>服务器标签输出字符串,而不对其进行编码:

<%= embedURL %> 

你也可以将它包装在一个HtmlString对象,以避免自动编码:

HtmlString html = new HtmlString(embedURL) 

那么你可以输出为正常:

<%: html %> 

或使用剃刀:

@html 

您还可以使用Html.Raw方法来包装它在HtmlString对象:

@Html.Raw(embedURL)