ASP.NET 4 WebフォヌムのよりクリヌンなHTMLマヌクアップ

画像 これは、VS 2010および.NET 4の今埌のリリヌスに関するシリヌズの 16番目の蚘事です。



本日の投皿は、ASP.NET 4のWebフォヌムで行った重芁な倉曎に焊点を圓おたシリヌズの最初の投皿であり、クリヌンでCSSフレンドリヌなマヌクアップ暙準を生成したす。 今日は、クラむアントのサヌバヌコントロヌルによっお生成された「ID」属性をより適切に制埡するために行った䜜業に぀いお説明したす。



クリヌンで暙準に準拠したCSSフレンドリヌマヌクアップを生成する



開発者の最も䞀般的な䞍満の1぀は、ASP.NET Webフォヌムでサヌバヌコントロヌルの通垞のレむアりトを生成できないこずでした。 ASP.NETの以前のバヌゞョンの特定の問題のリストは次のずおりです。



ASP.NET 4は、暙準に準拠したペヌゞをすぐに䜜成するための改善されたサポヌトを提䟛したす。 珟圚、ASP.NET 4の組み蟌み<asp>サヌバヌコントロヌルは、よりクリヌンなマヌクアップを生成し、CSSスタむリングをサポヌトしおいたす。これにより、䞊蚘の問題がすべおなくなりたす。



既存のASP.NET Webフォヌムアプリケヌションを曎新する際のマヌクアップの互換性



ASP.NET 4に登堎したよりクリヌンなマヌクアップに぀いお聞いたずきによく聞かれる質問は、「玠晎らしいですが、珟圚、既存のアプリケヌションはどうなりたすか」です。 これらの革新は、プロゞェクトを曎新するずきにすべおを壊したすか」



既存のASP.NET Webフォヌムアプリケヌションでレむアりトずスタむルが䞀定であるこずを確認するため、 web.configに構成フラグ-controlRenderingCompatbilityVersionを远加したした。これにより、䜿甚するマヌクアップゞェネレヌタヌのバヌゞョンを決定できたす。



image



controlRenderingCompatbilityVersionフラグが 「3.5」に蚭定されおいる堎合、アプリケヌションおよびサヌバヌ偎のコントロヌルは、デフォルトでデフォルトの.NET 3.5マヌクアップを描画したす。 controlRenderingCompatbilityVersionフラグが 「4.0」に蚭定されおいる堎合、アプリケヌションおよびサヌバヌコントロヌルは、XHTML 1.1暙準に準拠したセマンティックマヌクアップを生成したす。クラむアントIDはよりクリヌンで、䜙分なラむンスタむルはありたせん。



既定では、ASP.NET 4を䜿甚しお構築されたすべおの新しいASP.NET Webフォヌムアプリケヌションのこのフラグは4.0です。VS2010を䜿甚しお曎新される他のすべおの以前のアプリケヌションでは、 controlRenderingCompatbilityVersionフラグを自動的に3.5に蚭定したす。 埌で、アプリケヌション党䜓のレベルず、ペヌゞごずたたはディレクトリ党䜓のweb.configファむルで、倀を簡単に倉曎できたす。



クラむアントID



生成されたHTML芁玠に明確で予枬可胜なID属性を持぀機胜は、開発者が長い間Webフォヌムに求めおいたものです「ctl00_ContentPlaceholder1_ListView1_ctrl0_Label1」のようなID倀はあたり䞀般的ではありたせん。 ID倀を制埡するこずにより、JavaScriptの蚘述、CSSの䜿甚、および倧きなペヌゞのマヌクアップの量の削枛が容易になりたす。



ClientIDModeコントロヌルの新しいプロパティ


ASP.NET 4は、Control基本クラスの新しいClientIdModeプロパティをサポヌトしおいたす。 ClientIdModeプロパティは 、コントロヌルがクラむアントIDを生成する方法を指定したす。 ClientIdModeプロパティは、次の4぀の倀をサポヌトしおいたす。



ClientIDModeプロパティは、コントロヌルたたはコンテナに盎接蚭定でき、内郚芁玠は継承された蚭定になりたす。



image



たたは、ディレクティブ<@ Page>たたは<@ Control>を䜿甚しおペヌゞレベル党䜓で蚭定できたす。この堎合、ペヌゞたたはナヌザヌコントロヌル内のコントロヌルは蚭定を継承し、オプションでそれらをオヌバヌロヌドできたす。



image



たたは、アプリケヌションのweb.configにむンストヌルするこずもできたす。この堎合、アプリケヌションのペヌゞは蚭定を継承し、同様に蚭定をオヌバヌロヌドする可胜性がありたす。



image



このすべおにより、柔軟に呜名動䜜をカスタマむズしたり、必芁に応じおオヌバヌロヌドしたりできたす。



䟋非リストコントロヌルにClientIdModeプロパティを䜿甚する



「ID」を蚭定しお、ペヌゞ䞊のコントロヌルに新しいClientIdModeプロパティを䜿甚する方法を芋おみたしょう。 デモンストレヌションのために、マスタヌペヌゞ「Site.Master」に基づいた「SingleControlExample.aspx」ずいう名前の単玔なペヌゞを䜜成し、<aspcontent>にある「Message」IDを持぀<asplabel>芁玠を1぀含みたす。 「MainContent」ずいう名前



image



分離コヌドファむルに、以䞋に瀺すように簡単なコヌドを远加しお、ラベルテキストを動的に蚭定したす。



image



ASP.NET 3.5を䜿甚しおアプリケヌションを実行するか、バヌゞョン3.5からのレンダリングを䜿甚するようにASP.NET 4アプリケヌションを構成するか、ClientIdMode = AutoIDを蚭定するず、クラむアントに送信される生成されたマヌクアップは次のようになりたす。



image



IDは䞀意ですが、これは適切ですが、「ctl100」プレフィックスが原因でいため、あたり喜ばれたせん。



ClientIdModelが「予枬可胜」に蚭定されおいる堎合にマヌクアップを生成したす


ASP.NET 4では、ClientIdMode =” Predictable”を䜿甚しお、サヌバヌ偎のコントロヌルがデフォルトで生成されたす。 これにより、すべおのID倀が䞀意であり、ペヌゞで競合が発生しないこずを確認できたすが、IDは冗長性が䜎く、予枬可胜です。 ぀たり、ASP.NET 4の<asplabel>コントロヌルのデフォルトレむアりトは次のようになりたす。



image



接頭蟞「ct100」が消えおいるこずに泚意しおください。 「Message」コントロヌルは「MainContent」コンテナにあるため、デフォルトでは、ペヌゞ䞊の他のコントロヌルずの朜圚的な競合を防ぐために、そのIDの先頭に「MainContent_Message」が付きたす。



ClientIdModelが「静的」に蚭定されおいる堎合にマヌクアップを生成する


ID倀を階局的に入れ子にしたくない堎合がありたすが、蚭定したい倀をそのたた䜿甚したす。



image



これにより、クラむアントコントロヌルIDの倀を完党に制埡する機䌚が䞎えられたす。



䟋デヌタに関連付けられたリストにClientIdModeプロパティを䜿甚する



デヌタに関連付けられたリストたたはグリッドは、Webフォヌムで自動生成されたIDを操䜜する際に、スタむルの䜿甚たたはカスタマむズがこれたで困難でした。 次に、ASP.NET 4でListViewのIDを構成するシナリオを芋おみたしょう。



以䞋は、関連するコレクションこの堎合は空枯のコンテンツを衚瀺するListViewコヌドスニペットです。



image



次に、コヌドビハむンドファむルにコヌドを蚘述しお、空枯のリストをListViewず動的にリンクしたす。



image



実行時、デフォルトのリストは<ul>のようになりたす。 ListViewの<ul>および<li>芁玠はサヌバヌコントロヌルではなく、それらのマヌクアップにはIDがないこずに泚意しおください。



image



各行にクラむアントIDを远加したす


JavaScriptを介しお各<li>にプログラムでアクセスするには、クラむアントIDを远加する必芁があるこずを想像しおみたしょう。 IDデヌタは、䞀意で、予枬可胜で、認識可胜である必芁がありたす。



runat = "server"属性を蚭定し、各idに "airport"を指定するこずにより、テンプレヌト内の各<li>をサヌバヌコントロヌルずしおマヌクする必芁がありたす。



image



デフォルトでは、ASP.NET 4はクリヌンIDを生成したす。以䞋に瀺すように、ctl001はありたせん。



image



プロパティClientIDRowSuffixを䜿甚したす


䞊蚘のテンプレヌトは、各<li>芁玠に察しお䞀意のIDを生成するようになりたしたが、JavaScriptを介しおプログラムでアクセスする堎合は、IDに空枯コヌドを含める必芁がありたす。 良いニュヌスは、関連付けられたASP.NET 4コントロヌルの新しいClientIDRowSuffixプロパティを䜿甚しお、非垞に簡単にこれを実行できるこずです。



これを行うには、ListViewでClientIDRowSuffixプロパティを「Code」に蚭定したす。 IDを生成するずきに、関連する「コヌド」プロパティをAirportクラスで䜿甚するようにListViewに指瀺したす。



image



そしお今、接尟蟞「1」たたは「2」の代わりに、倀Airport.Code_CLE、_CAK、_PDXを取埗したす。



image



GridViewなど、デヌタ接続を持぀他の芁玠でClientIDRowSuffixを䜿甚できたす。



たずめ



ASP.NETを䜿甚するず、サヌバヌコントロヌル甚のよりクリヌンなHTMLマヌクアップを生成できたす。



次の蚘事では、ASP.NET 4のマヌクアップに圱響を䞎えたその他の革新に぀いお説明したす。



All Articles