MultiView内のTextboxへの、検証コントロール一括処理
検証コントロールを使うパターンは、CustomControl等を除いて大体毎回同じである事が多い。
最も多いのは、
-
- RequiredFieldValidatorによる必須チェック
- RegularExpressionValidatorによる正規表現チェック
の2つ。
エラーメッセージも全て同じである上、正規表現の場合、禁則文字もほぼ同じである事が多い。
以降では、これら検証コントロールのみ設置するだけで、メッセージと規則を一括処理するコードを記す。
aspx ファイル側
<asp:MultiView ID="mvEdit" runat="server" ActiveViewIndex="0"> <asp:View ID="viewForm" runat="server"> <table> <tr> <th>名称</th> <td> <asp:TextBox ID="txtName" runat="server" MaxLength="50" Width="200px" CssClass="ime-on"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtName" /> <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtName" /> </td> </tr> ・・・ </table> </asp:View> </asp:MultiView>
aspx.cs ファイル側
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { #region 検証フィールドの設定 foreach (Control c in viewForm.Controls) { if (c is RequiredFieldValidator) { using (RequiredFieldValidator objReq = (RequiredFieldValidator)c) if (objReq != null) objReq.Text = "<br />必須項目です。"; } else if (c is RegularExpressionValidator) { using (RegularExpressionValidator objReg = (RegularExpressionValidator)c) if (objReg != null) setRegularExpressionValidatorValue(objReg); } } #endregion } } protected void setRegularExpressionValidatorValue(RegularExpressionValidator objReg) { //禁則文字と文字数制限の検証 //const string strRegFormat = "^[^\\<\\>\\&\\"\';^]{0,5}$"; //正解例。サンプルなので、削除禁止。 const string strRegMessage = "<br />{0}文字まで入力可能です。<br />また、「^」「<」「>」「&」「\"」「'」「;」は入力できません。"; const string strRegFormat1 = "^[^\\<\\>\\&\\\"\';^]{0,"; const string strRegFormat2 = "}$"; //検証対象となるテキストボックス using (TextBox _textbox = (TextBox)viewForm.FindControl(objReg.ControlToValidate)) { int numLen = 0; if (_textbox != null) numLen = _textbox.MaxLength; objReg.ValidationExpression = String.Format("{0}{1}{2}", strRegFormat1, numLen, strRegFormat2); objReg.Text = String.Format(strRegMessage, numLen); } }