2

ユーザーが YouTube ビデオの URL を入力できるフォームがあります。私のコードは 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;

この文字列を印刷して、引用符や小なり/大なり記号をエスケープしないようにするにはどうすればよいですか?

4

3 に答える 3

0

文字列がエンコードされるのは、ページに文字列を書き込むときです。server タグを使用して<%= %>、文字列をエンコードせずに出力します。

<%= embedURL %>

HtmlString自動エンコーディングを回避するために、オブジェクトでラップすることもできます。

HtmlString html = new HtmlString(embedURL)

その後、通常どおり出力できます。

<%: html %>

またはかみそりを使用して:

@html

メソッドを使用してオブジェクトHtml.Rawにラップすることもできます。HtmlString

@Html.Raw(embedURL)
于 2012-04-13T08:16:56.080 に答える