6

重複の可能性:
ASP.NET の「特別な」タグ

MVC アプリケーションを理解しようとしています。複数のユーザー コントロールがあります。これらのコントロールでは、次のような構文が表示されます。
<%= ...some text ... %>

私も見ました:
<%: ...some text ... %>
<@ ...some text ... %>
<% ...some text ... %>
<%# ...some text ... %>

コントロール/javascript にコードを記述できることはわかりますが、%、%:、%=、%# の違いがよくわかりません。

それらはいつ「実行/評価」されますか?

<%= ... =>ユーザーコントロールにある場合とJavascript関数で一重引用符で囲まれている 場合の違いはありますか?

タイトルが正しいかどうかさえわかりません。グーグルで検索しても何も得られません。したがって、私は説明に満足し、ドキュメントへのリンクに満足し、正しい用語に満足しています.

4

3 に答える 3

4

ASP.NET MVC で WebForms ビュー エンジンを使用していると仮定すると、知っておく必要があるのは次のとおりです。

  • <%= %>- 入力の評価結果をレスポンスに出力します。たとえば、<%= "<div>foo</div>" %>出力します<div>foo</div>
  • <%: %>- 出力を HTML エンコードすることを除いて、最初のものと同じです。したがって、<%: "<div>foo</div>" %>出力されます&lt;div&gt;foo&lt;/div&gt;
  • <% %>- サーバーで式を評価しますが、応答には何も出力しません。たとえば、変数を宣言することが<% string foo = "foo bar"; %>できます: 後で前の 2 つの方法のいずれかで出力するために使用できます。
  • <%@ %>- これは、ビューの Page または Control ディレクティブを定義するためにのみ使用されます。また、名前空間とアセンブリを特定のビューのスコープに入れることもできます。たとえば<%@ Import Namespace="System.IO" %>System.IO名前空間をスコープに入れます。

関係する限り<%#、これは ASP.NET MVC では使用されません。これはデータ バインディングと呼ばれる概念であり、従来の WebForms アプリケーションでのみ機能します。

于 2013-01-25T16:25:11.360 に答える
1

<%= ...some text ... %>: 式が含まれています。その式の結果が.ToString()呼び出され、結果の文字列が直接出力されます。

<%: ...some text ... %>: 式が含まれています。式の結果が の場合、IHtmlString.ToHtmlString()呼び出され、結果が直接出力されます。それ以外の場合、その式の結果が.ToString()呼び出され、結果の文字列は出力される前にエスケープされます。

<@ ...some text ... %>: 名前空間などを含めるためのページ ディレクティブが含まれています。これはコンパイラ ディレクティブであり、ビューがコンパイルされるときに評価されます (通常、ビューが最初に呼び出されるとき)。

<% ...some text ... %>: 1 つ以上のステートメントが含まれています。これらのステートメントが実行されます。

<%# ...some text ... %>: これは、ASP.NET WebForms のデータ バインディング式です。MVC ビューの有効な構文ではないと思います。ただし、実際には MVC パラダイムの一部ではない「ユーザー コントロール」について言及し続けているため、この質問が本当に MVC に関するものかどうかを再検討することをお勧めします。

于 2013-01-25T16:22:47.040 に答える
0

<%# ...some text ... %>データバインディング式用です。次のようなものがあるときのように:

<asp:itemtemplate>
  <asp:label Text='<%#Eval("Property")%>' .../>
</asp:itemtemplate>

<%= some text %>基本的にはのショートカットですResponse.Write()

<%@ some text %>アプリケーションディレクティブ用です。たとえば、名前空間をインポートする必要がある場合:<%@ Import namespace="value" %>

これをほめるStriplingの戦士の答えに気づきました...

于 2013-01-25T16:24:42.797 に答える