2

ASP .NET MVC 4 を使用して Web アプリケーションを作成しています。

山かっこ (<>) を積極的に使用する C# など、さまざまなプログラミング言語でコードをデータベースに保存します。私は JavaScript ライブラリを使用して、このコードを文字どおり画面に表示します。少し調査したところ、 @Html.Raw() がエンコードされていない出力を生成するための最適な方法であることが明らかになりましたが、実際には、この方法で生成された出力は真に「生」ではないことが示されています。コーディングして、悪い「HTML」を「修正」してみてください。

最終結果は有効な C ライクなコードではありません。おっとっと。

Razor からあらゆる種類の処理をバイパスし、クエリのコードをビューに直接出力する方法はありますか?

編集:

特に私を悩ませた例は次のとおりです。

using System;

public class Greeter {
    public static void Main() {
        string name = "<Your Name>";
        Console.WriteLine("Hello, " + name + "! Welcome to C#.");
    }
}

代わりに、Html.Raw() を介して HTML 出力に出力されるのは次のとおりです。

using System;

public class Greeter {
    public static void Main() {
        string name = "<your name="">";
        Console.WriteLine("Hello, " + name + "! Welcome to C#.");
    }
}
</your>

編集2:

生の C# は有効な HTML ではないことに注意してください。コードは実際には JavaScript で読み取られ、HTML でのコードのレンダリングに固有のエンコードが行われます (codemirror を使用)。これが、エンコードされた HTML (実際には 2 回エンコードされる) と "修正された HTML" (意味不明な C# を作成する) が、私の特定のニーズに対して不適切な形式の出力である理由です。これが、データをそのまま出力したい理由です。

編集3:

明確にするために、私の質問は、HTML でコードをレンダリングする方法に関連するものではありません。私の質問は、Razor または ASP .NET MVC を介して利用可能なその他のユーティリティを使用して、ビューの元のページ ソース内のデータ ユニットの出力を完全に制御するにはどうすればよいかということです。@Html.Raw() は、この望ましい結果を達成していないようです。

4

5 に答える 5

2

HTML で安全に印刷できるように、次のようにデータをエンコードしますHttpServerUtility.HtmlEncode()

HTML エンコーディングにより、テキストがブラウザーに正しく表示され、ブラウザーによって HTML として解釈されないようになります。たとえば、テキスト文字列に小なり記号 (<) または大なり記号 (>) が含まれている場合、ブラウザはこれらの文字を HTML タグの開きかっことして解釈します。文字が HTML エンコードされている場合、それらは文字列&lt;および&gt;に変換されます。これにより、ブラウザーは小なり記号と大なり記号を正しく表示します。

于 2013-10-03T13:07:41.547 に答える
0

ASP.NET MVC 4Html.Rawでは、提供された文字列がまったく変更されずに出力に書き込まれます。このメソッドを使用するときは、文字列が適切に HTML エンコードされていることなどを確認する必要があります。

説明したようにコード スニペットの予期しない出力が表示される場合、それはHtml.Rawコード スニペットを変更しているわけではありません。変更は別の場所で行われます。

于 2013-10-04T06:48:53.680 に答える
0

私も一見生の出力を持っていました。私にとっての理由は、参照されたアセンブリの一部ではないアセンブリが Views/web.config にリストされていたためです。

于 2014-09-15T10:54:50.620 に答える
0

あなたの最初の編集を見ると、HTML を変更しているのは ASP.NET MVC ではなく、ブラウザーがそれを理解しようとしているに違いありません。

あなたはJSからの出力を読んだと言いました。罰金。C# コードを html として送信しないでください。コンテンツ タイプとして送信するとtext/plain、ブラウザはまったく解析を試みません。

于 2014-09-15T11:13:02.520 に答える