• 締切済み

ASP.NETでのテキストボックスにHyperlinkが自動的に表示させたい!

皆さん、教えくれませんか? ASP.NETでのテキストボックスにデータを設定する時、 もし、設定データの中にHyperLink(http://wwwなど)があったら、自動的にHyperLinkとして表示してほしいです。それに、ユーザーがそのHyperLinkにマウスでクリックする時、飛び先へ遷移とする。 その機能だけほしいですが、誰か教えくれませんか? ありがとうございます!

みんなの回答

回答No.1

そもそも ASP.NET で言うところの "テキストボックス" って何種類かあるけれど、実行してブラウザに表示されるときは Input や Textarea として表現されるでしょ。これらのタグってハイパーリンクはサポートしてないから。 ブラウザ上でハイパーリンクを表現するのは a タグですよ。 んで ASP.NET のコントロールで最も簡単なのは HyperLink コントロールなわけで。 フォーム上に HyperLink コントロールを配置し、ID を "HyperLink1" とする。 適当なイベント(Page_Load か?)にて string url_regX = @"\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)?(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(?:\?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?"; string source = "http://www.yahoo.co.jp"; this.HyperLink1.Text = source; if (System.Text.RegularExpressions.Regex.IsMatch(source,url_regX)) { this.HyperLink1.NavigateUrl = source; } とするとか。 実際に使用する際には変数 source に質問文で言うところの "データ" を入れてあげる。 正規表現のパターン部分は web から適当に拾ってきたものなのでホントにこれで url を判断してくれるかどうかまでは責任持てません。。。ご自分で研究してみてください。 http://www.google.com/search?num=50&hl=ja&q=c%23+url+%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&lr=lang_ja