2011-07-06 8 views
0

のダイナミックカスタムクライアントサイドバリデーターを追加する方法私は、ASP.NETで動的に作成されるテキストボックスコントロールを持っています。これらのコントロールに動的にカスタムバリデータを追加したいと思います。これらのバリデータは、クライアント側で実行する必要があります。私は次のコードスニペットを持っています:asp.net

protected override void InitDynamicControls() 
    { 
     registerScript(); 

     CustomValidator cv = new CustomValidator(); 
     cv.ErrorMessage = "error"; 
     cv.Display = ValidatorDisplay.Dynamic; 
     cv.ControlToValidate = TextField.ID; 
     cv.ValidationGroup = "ConfigurationValidation"; 
     cv.ClientValidationFunction = "ConfigurationOption_ClientValidate"; 

     base.Controls.Add(cv); 
    } 


    private void registerScript() 
    { 
     System.Text.StringBuilder script = new System.Text.StringBuilder(); 

     script.Append("<script language=\"javascript\">\n"); 
     script.Append("function ConfigurationOption_ClientValidate(source, arguments) \\{arguments.IsValid = false;\\}\n"); 
     script.Append("</script>\n"); 

     Type type = this.GetType(); 

     if (!Page.ClientScript.IsClientScriptBlockRegistered(type, "ConfigurationOption_ClientValidate")) 
      Page.ClientScript.RegisterClientScriptBlock(type, "ConfigurationOption_ClientValidate", script.ToString()); 
    } 

JavaScriptのメソッドにはロジックが含まれています。メソッドInitDynamicControls()はPage_Loadメソッドにロードされます。ページ上のボタンをクリックすると、バリデータは実行されません。

何が間違っているのを助けてくれますか? おかげ

答えて

1

はこれを試してみてください:

script.Append("<script type='text/javascript'>"); 
     script.Append("function ConfigurationOption_ClientValidate(source, arguments) {arguments.IsValid = false; }"); 
     script.Append("</script>"); 

それとも、より良いこれを使用する:

private void registerScript() 
{ 
    Type type = this.GetType(); 

    if (!Page.ClientScript.IsClientScriptBlockRegistered(type, "ConfigurationOption_ClientValidate")) 
     Page.ClientScript.RegisterClientScriptBlock(type, "ConfigurationOption_ClientValidate", "function ConfigurationOption_ClientValidate(source, arguments) { arguments.IsValid = false; }", true); 
} 
+0

おかげで男は、2番目のオプションは魔法のように動作します! – zosim