簡體   English   中英

客戶端驗證未在我的自定義BaseValidator上觸發

[英]Client-side validation is not firing on my custom BaseValidator

因此,我正在編寫一個自定義驗證器來驗證Ajax Toolkit的Rating控件。 但是,客戶端驗證不會觸發。

我有這種方法來注冊腳本:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);
    string script = @"<script type=""text/javascript"">function RatingValidatorEvaluateIsValid(val)
{
    alert( 'here' );
    return false;
}</script> ";

    Page.ClientScript.RegisterClientScriptBlock(GetType(), "ratingValidator", script);
}

我注冊這樣的屬性:

protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
{
    base.AddAttributesToRender(writer);

    // Add the client-side code (if needed)
    if (this.RenderUplevel)
    {
        writer.AddAttribute("evaluationfunction", "RatingValidatorEvaluateIsValid", false);
    }
}

該腳本以及屬性都顯示在頁面上,但永遠不會出現alert('here')

(一切正常,服務器端)

編輯標記:

<ajaxToolkit:Rating ID="ajaxRating" runat="server" StarCssClass="ratingStar" WaitingStarCssClass="savedRatingStar" 
                FilledStarCssClass="filledRatingStar" EmptyStarCssClass="emptyRatingStar" CssClass="stars"
                RatingAlign="Horizontal" RatingDirection="LeftToRightTopToBottom" 
                AutoPostBack="True" OnChanged="OnChanged" />
<my:RatingValidator runat="server" ID="RatingValidator" ControlToValidate="ajaxRating"
ErrorMessage="Please select a rating." EnableClientScript="True"
</my:RatingValidator>

編輯2好的,這很奇怪...

生成的span是正確的:

<span id="CPHUser_rating_RatingValidator" evaluationfunction="RatingValidatorEvaluateIsValid" style="visibility:hidden;">Please select a rating.</span>

但是底部的JS沒有分配我的評估功能。

var CPHUser_rating_RatingValidator = document.all ? document.all["CPHUser_rating_RatingValidator"] : document.getElementById("CPHUser_rating_RatingValidator");
CPHUser_rating_RatingValidator.controltovalidate = "CPHUser_rating_ajaxRating";
CPHUser_rating_RatingValidator.errormessage = "Please select a rating.";

好像我回答了我自己的問題...

我顯然沒有正確分配我的evaluationfunction

我將其更改為:

Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "RatingValidatorEvaluateIsValid");

現在可以了。

謝謝你們的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM