velocityreviews - Login Control/Validation Summary within Content Placeholder
MSDNフォーラム - PasswordRecovery コントロールで ValidationSummary が表示されない
メモ。
ASP.NET 2.0で、通常のWebフォームにLoginコントロールとValidationSummaryコントロールを配置する場合、
「ValidationSummary.ValidationGroup に Login.ID を設定」
すれば、期待通り入力内容の検証エラーが表示される。
これが、マスターページを用意して それを継承したWebフォーム内にLogin + ValidationSummaryを置くと、エラーが表示されない。
バグと思われるが。。。
調べてみると、マスターページを使用した場合、LoginコントロールIDがクライアントブラウザに送られる時に変化しているようで、そこでValidationGroupの不一致が起こって表示されないらしい。
冒頭でリンクしている掲示板の情報を参考に、Page_Loadイベントに下記の記述を加えて回避中。
(↓一部の空白は全角空白,LoginValidationSummaryとLoginはコントロールID)
Protected void Page_Load(object sender, EventArgs e)
{
LoginValidationSummary.ValidationGroup = Login.ClientID.Replace("_", "$");
}
[こんな感じ]でエラーメッセージが表示できるようになった^^
なんかメッセージの「ら」が抜けてるな。。。直そうっと。。。
(10/30追記)
Loginコントロールをテンプレートに変換すると、上記のバグは出なかった。
現状、レイアウトのカスタマイズを行わない場合でもテンプレート変換しておいた方が良いっぽい。