9

私は現在、ユーザーがコンテンツを追加できるように、ASP.NETで小さなテンプレートシステムを作成しています。たとえば、ユーザーは文字列を入力できます(変数の型は文字列です)。

topHeader[x] = "They think it's all over. It is now!";

ただし、必要な変更の1つは、このコンテンツ内にいくつかの基本的なHTMLタグを追加する機能です。これにより、次のことが可能になります。

topHeader[x] = "They think it's all over. <strong>It is now!</strong>";

また

topHeader[x] = "They think it's all over. <a title="Football News" href="URL">It is now!</a>";

このようなものを文字列に追加すると、HTMLとしてフォーマットされなくなりますが、どうにかしてエスケープできるようにしたいと思います。当然、私は答えをインターネットで探しましたが、Razorはかなり新しいので、私を助けることはあまりありません。

誰もがこれを行う方法のアイデアを持っていますか?

4

3 に答える 3

9

IHtmlStringHTMLソースを保持する実装を作成する必要があります。

Razorはこれを行うためのヘルパーメソッドを計画していますが、AFAIKにはまだありません。そのため、インターフェイスを実装し、GetHtmlString()メソッドからHTMLを返す独自のクラスを作成する必要があると思います。
編集:あなたはHtmlStringクラスを使用することができます。

topHeader辞書を変更してIHtmlStringsではなくsを保持するかString、コードをそのままにしHtmlStringて、Razorビューでラップすることができます。

<tag>@new HtmlString(topHeader[x])</tag>

HTML以外の特殊文字を正しくエスケープするようにしてください。

于 2010-07-27T07:02:57.053 に答える
9

彼らが追加したヘルパーメソッドはHtml.Raw()と呼ばれ、はるかにクリーンです。

次に例を示します。

@Html.Raw("Hello <a>World</a>!")
于 2011-01-17T00:39:39.050 に答える
4

SLaksは正しいですが、独自の実装を作成する必要はありません。IHtmlStringに組み込まれている、System.Webと呼ばれる実装がありますHtmlString。それで:

topHeader[x] = new HtmlString("They think it's all over. <a title=\"Football News\" href=\"URL\">It is now!</a>");

トリックを行う必要があります。

于 2010-07-27T15:22:52.887 に答える