.aspxページを設定しています。置き換える必要のあるプレースホルダーがたくさんあります。名、姓、市、州など。これを効率的に行うにはどうすればよいですか。
たくさんドロップ...
<asp:Label runat="server" id="Label_FirstName" Text="" />
...どこにでも?
または、通常のページ領域でデータバインディング構文を使用する方法はありますか?
<% FirstName %>
前もって感謝します!
.aspxページを設定しています。置き換える必要のあるプレースホルダーがたくさんあります。名、姓、市、州など。これを効率的に行うにはどうすればよいですか。
たくさんドロップ...
<asp:Label runat="server" id="Label_FirstName" Text="" />
...どこにでも?
または、通常のページ領域でデータバインディング構文を使用する方法はありますか?
<% FirstName %>
前もって感謝します!
ご了承ください
<asp:Label runat="server" id="Label_FirstName" Text="" />
文字列をエスケープします(たとえば、<と>を&lt;と&gt;に置き換えます)が、
<%= FirstName %>
しない。それがあなたの意図である場合は問題ありませんが、XSS攻撃用のチャネルを開く可能性があることに注意してください。文字列を適切にエスケープするには、
<%= System.Web.HttpUtility.HtmlEncode(FirstName) %>
代わりは。
あなたは確かに使うことができます:
<%= FirstName %>
FirstNameはページのプロパティです。必ずしもクラス内のプロパティである必要はありません。その行からほとんどすべてにアクセスできます。
更新: DrJokepuが指摘したように、表示しているデータがユーザー入力からのものである場合、XSSの脆弱性が発生します。指摘されたように、それを回避するためにHtmlEncodeを使用します。その場合、より短い構文は次のようになります。
<%= Server.HtmlEncode(FirstName) %>
また、ベースページがある場合は、メソッドを定義して、次のことを実行できます。
<%= HtmlEncode(FirstName) %>
asp.netラベルを使用する場合は、適切な場所でEnableViewState = falseを実行して、不要なビューステートの送受信を回避します。
フォーマットにはids/cssクラスを使用し、cssスタイルシートにスタイルを設定します。cssは、コンテンツが動的であるかどうかに関係なく、ブラウザーでキャッシュできます。
情報のリストについては、ListViewまたはRepeatersを使用しても、ネットワーク経由で送信される特定のhtmlを制御できます。
ASPスタイルのタグ(<%= %>
)を確実に使用できますが、最初のアプローチはよりクリーンで保守が容易であると私は主張します。ASPスタイルのタグを使用すると、データバインディングではなく、ページのすべてのメンバー(フィールド、プロパティ、およびその他のメソッドを含む)にアクセスできるようになります。
したがって、FirstName
作業中のページのフィールドまたはプロパティがである場合は、両方のアプローチが機能します。私は個人的に、コントロールベースのアプローチの方が優れていると思いますが、それぞれ独自のアプローチです。
色、フォント、太字などをいじりやすく、エラーを表示したり、特定のテキストにユーザーの注意を引き付けたりするのが簡単なため、ラベルを使用するのが好きです。
私は通常、コードビハインドにセットアップメソッドがあります。
if(!Page.IsPostBack)
SetupForm();
SetupForm()
{
Label_FirstName.Text = firstName;
}
HTMLをさらに制御したい場合は、一連のラベル、置換コントロール、またはリテラルテキストを使用できます。
次のようなマークアップでコードを使用できます。
<%= this.FirstName%>
これにより、FirstNameという名前のページ上のプロパティが呼び出され、そこからの戻り値がラベルの間に配置されます。
それはあなたがそれらを使用する文脈に依存します。通常、asp:labelコントロールを使用すると、ページの背後にあるコードからアクセスできるため、問題ありません。データバインディングメソッドは通常、DataGridやRepeaterなどのデータバインドされたコントロール内から使用されます。
データバインディングメソッドの本当の問題は、これに対するIDEのサポートがあまり良くないことです。これを機能させるには、ページクラスにプロパティを設定する必要があります。このプロパティは、コードビハインドに入力する必要がありますが、プロパティ名が変更された場合は、aspxページも必ず更新する必要があります。ラベル方式を使用する場合、IDEはラベル名に変更があったかどうか、またはラベル名が完全に削除されたかどうかを検出し、コンパイル時エラーを出します。
または、jQueryを使用してデータを入力し、プレースホルダーとしてスパンを使用することもできます。jQueryは、JavaScriptを使用してフィールドにデータを入力するため、ページについて少し異なる考え方が必要になることに注意してください。
Jeff Atwood はCoding Horrorでこのテーマを調査し、パフォーマンスは重要ではないことを発見しました...
注:結局のところ、ジェフの投稿は一粒の塩で取らなければならないようです...コメントを読まずに答えを急いで申し訳ありません
これを試して:
<%= FirstName %>