ASP.NETの小技―HTML要素の属性を変更する

まだ三が日だというのに、プログラムネタです。風邪を引いたらしく、ジムにも行けないので、仕方なくプログラムなどを組んでいますが、そこで見つけたちょっとしたネタを備忘録替わりに書きます。

で、今回は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";
}

ユーザコントロールのプロパティで、表示時に見え方を変えるときなどに使えそうですね。

コメント