はじめに
ASP.NETは非常に強力な基盤です。標準で用意されているコントロールもかなり便利なものばかりです。ただし、もちろん万能というわけではありません。
Webカスタムコントロールは簡単に作ることができ、細かい挙動を変更するのに便利です。Webカスタムコントロールをどのように作成すればよいか一緒に見ていきましょう。
対象読者
ASP.NETに興味のある方。
必要な環境
Visual Studio 2005の環境で検証しています。2002、2003でも流用できると思います。
標準のラベル機能の確認
データを表示する際、元データが改行つきのデータだった場合は、どのように表示させているでしょうか? まずは、標準のラベルコントロールを使った例を示します。
string DBからのデータ = "a\r\nb\r\nc"; this.Label1.Text = DBからのデータ;
Dim DBからのデータ As String = "a" + vbNewLine + "b" + vbNewLine + "c" Me.Label1.Text = DBからのデータ
![](http://cz-cdn.shoeisha.jp/static/images/article/402/01.gif)
このように改行が入っているにもかかわらず、スペースが開いているだけになってしまっています。ASP.NETは、Webサーバ側でHTML(XHTML)に変換して出力しているため、改行は、HTMLでは\r\n
などで表現するのではなく<br>
に、ASP.NETのようなXHTMLでは<br />
に変換しなくてはいけません。
それでは先ほどのコードを、改行を変換するように修正してみましょう。
string DBからのデータ = "a\r\nb\r\nc"; this.Label1.Text = DBからのデータ.Replace("\r\n", "<br />");
Dim DBからのデータ As String = "a" + vbNewLine + "b" + vbNewLine + "c" Me.Label1.Text = DBからのデータ.Replace(vbNewLine, "<br />")
実行結果は次のようになり、無事に改行されることが確認できます。
![](http://cz-cdn.shoeisha.jp/static/images/article/402/02.gif)
ただし、このやり方は非常に問題があります。項目が多い画面の場合にも同じ要領でやっていかなくてはいけないのでしょうか? また、データバインディングを用いた場合に、このようなReplaceを行うことが本当によいことでしょうか?