ユーザーは、Validatorは文句を言わない「複雑な」ユーザコントロールにクライアント側の検証Javascriptを呼び出して作成しました

StackOverflow https://stackoverflow.com/questions/586229

質問

私は(System.Web.UI.UserControlからの)ユーザーコントロールを作成し、そして(System.Web.UI.WebControls.BaseValidatorから)ユーザーコントロールのための私自身のバリデータを作成しました。私は、クライアント側の検証を行うためのユーザーコントロールを取得しようとするまで、すべてがうまく動作します。

この問題をデバッグしようとしますが、

私の代わりにカスタムユーザーコントロールのテキストボックスに「検証するControl」を設定していると、クライアント側のスクリプトが正常に動作します!私が作成している私の複合ユーザーコントロールの問題を持っているように私には見えます。誰もが前に、この問題が発生していますか?他の誰には、クライアント側の検証は、カスタムユーザーコントロール上で失敗見ていますか?

いくつかの余分な情報:

それは(ICallbackEventHandlerを使用して)ドロップダウン・リストを有効AJAXであるように、

複合コントロールは、リスト及び「ローダ・イメージ」ドロップダウンです。私はそれがテキストボックスを検証している場合にのみ表示されます検証関数の最初の行としてページに書き込まれている、と警告(「ランダムなメッセージを」)に置かれているJavaScriptのクライアント側は(すなわち、それは、検証時ではありませんことを知っています私のカスタムコントロール)

言語:C#の(ASP.NET 2.0)とjQuery 1.2.6

のaspxファイルでます:

<rms:UserDDL ID="ddlUserTypes" runat="server" PreLoad="true" />
<rms:DDLValidator 
        ID="userTypesVal"
        ControlToValidate="ddlUserTypes"
        ErrorMessage="You have not selected a UserType"
        runat="server"
        Text="You have not selected a UserType"
        Display="Dynamic"
        EnableClientScript="true" />

タグの背後にあるバリのコードで
protected string ScriptBlock
        {
            get
            {
                string nl = System.Environment.NewLine;
                return
                    "<script type=\"text/javascript\">" + nl +
                    "   function " + ScriptBlockFunctionName + "(ctrl)" + nl +
                    "   {" + nl +
                    "       alert('Random message'); " + nl +
                    "       var selVal = $('#' + ctrl.controltovalidate).val(); " + nl +

                    "       alert(selVal);" + nl +
                    "      if (selVal === '-1') return false;  " + nl +
                    "      return false;  " + nl +
                    "   }" + nl +
                    "</script>";
            }
        }

    protected override void OnPreRender(EventArgs e)
    {
        if (this.DetermineRenderUplevel() && this.EnableClientScript)
        {
            Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", this.ScriptBlockFunctionName);
            Page.ClientScript.RegisterClientScriptBlock(GetType(), this.ScriptBlockKey, this.ScriptBlock);
        }

        base.OnPreRender(e);
    }

私は(私のControlPropertiesValidを知っている)とEvaluateIsValid()OK動作します。

私はこの問題上の任意の助けを感謝します。

ノエルます。

正しい解決策はありません

他のヒント

BaseValidatorの代わりにのCustomValidatorを使用してみてください。

http://msdn.microsoft.com/ EN-US /ライブラリ/ 9eee01cx(VS.71).aspxの

そして、あなたのJSが呼び出されたことを確認するためにClientValidationFunctionを設定します:

ます。http:// MSDN .microsoft.com / EN-US /ライブラリ/ system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspxする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top