まだ三が日だというのに、プログラムネタです。風邪を引いたらしく、ジムにも行けないので、仕方なくプログラムなどを組んでいますが、そこで見つけたちょっとしたネタを備忘録替わりに書きます。
で、今回はASP.NETで、HTML要素の属性を動的に変更する、という小技です。
HTML要素とは、たとえばこんなのです。align属性はcenterですが、これをleftに変えるといったことをしたいとします。
<p align="center">………</p>
普通、HTML要素の属性を動的に変えるには、JavaScriptを使います。DOMやらDynamic HTMLとか言われているやつです。ですが、JavaScriptを使うにはクライアントサイドにページ内容がロードされてからではなくてはならず、そのためASP.NETページのプロパティや変数にアクセスすることはできません。
そこで、HTML要素をサーバコントロール化します。すると、ASP.NETページ内のコードでHTML要素にアクセスできます。サーバコントロール化するには、HTML要素にrunat属性を追加します。そして、コードからアクセスできるようにid属性も付加します。
<p runat="server" id="pControl" align="center">………</p>
これで、たとえばPreRenderイベントでalign属性を書き換えたい場合、このようなコードを書いてみます。
protected void fvPhoto_PreRender(object sender, EventArgs e)
{
pControl.Attributes["Align"] = "right";
}
ユーザコントロールのプロパティで、表示時に見え方を変えるときなどに使えそうですね。