18

.NET では...

<%=

<%: (new to .NET 4 - syntactic sugar for HTML encoding)

<%#

<%@

これらは正確には何ですか?

そして、もっとありますか?これらの完全なリストとそれらがどこかにあるものはありますか? 何を検索すればよいかを知ることさえ困難です。今夜 <%: が何であるかを発見するまで、「コード ナゲット ブロック」という言葉さえ聞いたことがありませんでした。

4

5 に答える 5

11

それらはしばしばコード ナゲットと呼ばれますが、その用語は Microsoft のドキュメントには存在しません。Microsoft は、.NET Framework における ASP.NET インライン式の紹介にあるように、それらをインライン式と呼んでいます。これらのシンボル (<% %>) 内のステートメントを処理する方法について、ASP.NET フレームワークの指示を提供します。その名前を知るまでは、コミュニティでそれについて尋ねるのは少し難しかった. 「網羅的な」リストは確かではありませんが、指定したよりもいくつかあります。以下は、その他のコード ナゲットのリストとその使用法、およびサンプル例です。

記号 -- 名前 -- 説明 -- 例 (形式)


<%-- 標準コード ナゲット -- 次のステートメントが C# ステートメントであることを示します。C# 構文規則に従う必要があります。例えば。

<% string[] cities = { ""London"", ""New York"", ""Paris"" };
string myCity = cities[new Random().Next(cities.Length)];
Response.Write(myCity);%>

<%=-- コンテンツ コード ナゲット -- 標準の cn と同様に、返された結果が を使用せずにブラウザへの応答に直接挿入されるという違いがありますResponse.Write。例えば。

<%=textBox.Text%> 

(推奨されません。html インジェクション攻撃のリスクが含まれます。テキスト ボックスへの入力が " < button type = submit > Submit</button >" のようなものである場合、ページにボタンが追加されます。もちろん検証は行われますが、ポイントが明確であることを願っています。)


<%:-- エンコードされたコード ナゲット -- <%= と同様ですが、応答は HTML エンコードされます。例えば。 Name is <%:textBox.Text%> (テキスト ボックスに入力が何であれ、それが表示されます。入力が " < button type = submit > Submit</button >" のようなものである場合、出力は "Name is <button type = submit> Submit</button>" になります。


<%#-- データ バインディング コード ナゲット -- 現在のデータ オブジェクトを参照するために使用されるデータ バインディング コード ナゲットを示します。リピーターなどのデータバインド コントロールでのみ使用できます。

<%#:-- エンコードされたデータ バインディング -- データ バインドされた値がエンコードされるエンコードされたデータ バインディング コード ナゲットを示します。例えば。

<asp:Repeater ItemType = ""System.String"" SelectMethod = ""GetCities"" runat = ""server">
<ItemTemplate>
<li > <%# Item % > </li>
</ItemTemplate>
</asp:Repeater> 

(エンコードされた ( <%#:) が使用されている場合は、解釈なしでリテラルを表示することをお勧めします。)"


<%$-- プロパティ コード ナゲット -- Web.config で定義されているような構成値を参照するために使用されます。

<asp:Literal Text = " < %$ AppSettings: cityMessage % > " runat = "server" /> 

(構成ファイルから cityMessage キーの値を取得します。)


<%@--Page ディレクティブ -- これは、Web フォーム (またはディレクティブの種類に応じて、コントロールまたはマスター ページ) を構成するために使用されます。

<%@ Page.. <%@ Master

上記の情報と例はすべて、Adam Freeman の Pro ASP .NET 4.5 ブック、第 12 章からのものです。

于 2014-04-08T02:10:27.583 に答える
10

これら<%@はディレクティブです。完全なリストとドキュメントについては、MSDNを参照してください。

ディレクティブを使用する場合、ディレクティブは .aspx または .ascx ファイルの任意の場所に配置できますが、ファイルの先頭にディレクティブを含めるのが標準的な方法です。各ディレクティブには、そのディレクティブに固有の 1 つ以上の属性 (値とペア) を含めることができます。

<%スクリプト ブロックです。これはMSDNの良い説明です

埋め込みコード ブロックは、ページのレンダリング フェーズ中に実行されるサーバー コードです。ブロック内のコードは、プログラミング ステートメントを実行し、現在のページ クラスの関数を呼び出すことができます。

<%#ブロックは通常、バインドされたコントロールで使用されます。詳細については、この短い記事を参照してください。

于 2011-11-20T23:16:41.033 に答える
2

これらすべての WebForm タグに適切な集合名が付いているかどうかはわかりませんが、すべてASP.NET Page Syntaxで説明する必要があります。

リストにない別のASP.NET Expressionsがあります。

<%$ expressionPrefix: expressionValue %>
于 2011-11-20T23:30:25.967 に答える