<%$%>と<%#%>はASP.NETでどのように機能しますか?
-
26-10-2019 - |
質問
私は一定期間ASP.NET WebフォームとASP.NET MVCを使用していました。
そう <%= %>
ビューでは意味があります Response.Write()
, <%: %>
MVCで導入されたHTMLエスケープを追加します。
SQLDATASOURCEコントロールデザイナーでは、このようなものを生成します ConnectionString="<%$ ConnectionStrings:FooConnectionString %>"
そして、あなたが使用するリピーターで <%# Eval("") %>
サイタックス。
私の質問は、正確に何をするかです <%$ %>
と <%# %>
タグ、彼らがどのような方法を隔離し、どのように振る舞うのですか?
解決
<%$ %>
それは 式構文.
AppSetting、リソース、接続ストリング用のショートカットが組み込まれています。あなたもすることができます あなた自身を書いてください.
<%# %>
それは データバインディング式構文.
これは、バインドされているオブジェクトからプロパティ値を解決するためにデータバウンドコントロールで使用されます。
他のヒント
私は少し前に本からこのテキストをクリップしました(私はどの本を覚えていません)それが説明したと思ったので <%# %>
構文ウェル -
古典的なASPアプリケーションに精通している人は、<%#%>構文は非常に馴染みがあると思うかもしれません。目的は似ていますが、アプリケーションが不適切に機能する可能性があるため、2つを混乱させないようにする必要があります。一方、ASP(およびASP.NET)では、<%=%>構文は、括弧内にあるものをレンダリング時に評価するものを引き起こしますが、ASP.NETに固有の<%#%>ブラケットは、結合中にのみ評価されます。このセクションの後半に表示されるように、ページとページ上の各バインド可能なコントロールには、databind()メソッドがあります。データバインディングブラケット(<%#%>)内に含まれる式は、コントロールのDatabindメソッドが呼び出された場合にのみ評価されます。
それはあなたの質問の半分だけに答えますが、ロブ・スティーブンソン・レゲットの優れた答えは他のすべてをカバーしています。私はこれをさらにいくつかのイラストによって追加すると思いました。
ASP.NET Webフォームで利用可能なさまざまな種類の表現に関するブログ投稿を書きました。
式とステートメント、パート2:ASP.NETコードブロックタイプ (インターネットアーカイブ)
次の式ブロックを説明します。
<%$ %>
ASP.NET Expression構文。アプリケーション設定、接続文字列、およびリソースにバインドするために使用されます。
<%# %>
ASP.NETデータ結合構文。コントロールのデータバインディング方法を呼び出すときにのみ評価されます。
<% %>
コードブロック、コードはの一部になります RenderMethodDelegate
. 。コードはステートメントである必要があります。使用する Response.Write
何かを出力する。
<%= %>
上記と同じですが、コードが単一の式であることを除いて。包まれます HtmlTextWrite.Write()
.