Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

改行やリンクをタグに自動置換するコントロール作成

簡単なWebカスタムコントロールの作成方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/06/01 00:00

本稿では、改行やリンクの自動置換を行うラベルコントロールを例に、Webカスタムコントロールの作成方法を解説します。既存のコントロールを修正する形式で作成するので、初心者でも理解しやすくなっています。

目次

はじめに

 ASP.NETは非常に強力な基盤です。標準で用意されているコントロールもかなり便利なものばかりです。ただし、もちろん万能というわけではありません。

 Webカスタムコントロールは簡単に作ることができ、細かい挙動を変更するのに便利です。Webカスタムコントロールをどのように作成すればよいか一緒に見ていきましょう。

対象読者

 ASP.NETに興味のある方。

必要な環境

 Visual Studio 2005の環境で検証しています。2002、2003でも流用できると思います。

標準のラベル機能の確認

 データを表示する際、元データが改行つきのデータだった場合は、どのように表示させているでしょうか? まずは、標準のラベルコントロールを使った例を示します。

標準のラベル機能のテスト(C#)
string DBからのデータ = "a\r\nb\r\nc";
this.Label1.Text = DBからのデータ;
標準のラベル機能のテスト(VB.NET)
Dim DBからのデータ As String = "a" + vbNewLine + "b" + vbNewLine + "c"
Me.Label1.Text = DBからのデータ

 このように改行が入っているにもかかわらず、スペースが開いているだけになってしまっています。ASP.NETは、Webサーバ側でHTML(XHTML)に変換して出力しているため、改行は、HTMLでは\r\nなどで表現するのではなく<br>に、ASP.NETのようなXHTMLでは<br />に変換しなくてはいけません。

 それでは先ほどのコードを、改行を変換するように修正してみましょう。

改行をBRに置換してのテスト
string DBからのデータ = "a\r\nb\r\nc";
this.Label1.Text = DBからのデータ.Replace("\r\n", "<br />");
改行をBRに置換してのテスト
Dim DBからのデータ As String = "a" + vbNewLine + "b" + vbNewLine + "c"
Me.Label1.Text = DBからのデータ.Replace(vbNewLine, "<br />")

 実行結果は次のようになり、無事に改行されることが確認できます。

 ただし、このやり方は非常に問題があります。項目が多い画面の場合にも同じ要領でやっていかなくてはいけないのでしょうか? また、データバインディングを用いた場合に、このようなReplaceを行うことが本当によいことでしょうか?


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 中 博俊(ナカ ヒロトシ)

    大阪でフリーのソフトウェアエンジニア兼テクニカルライターとして日々新技術で楽しんでいる。 MSMVP for C# ブログ:http://blogs.wankuma.com/naka/

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5