1
したがって、Ajaxツールキットの評価コントロールを検証するカスタムバリデーターを作成しています。しかし、クライアント側の検証は起動しません。カスタムBaseValidatorでクライアント側の検証が実行されていません
私はスクリプトを登録するには、この方法があります:
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')
は表示されません。
(すべてが正常に動作し、サーバー側)
編集マークアップ:2オーケー
<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>
編集、これは...
生成されます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.";
愚かな質問ですが、あなたの 'ControlToValidate'プロパティはバリデータに定義されていますか? 1つのことは何も起こらないことがあります。 –
アラートだけが発生するかどうか試したことがありますか?この文字列のようなものを試してくださいstrMessage = "Hello World" string script = "alert( '" + strMessage + "');"; ClientScript.RegisterClientScriptBlock(this.GetType()、 "Alert"、script、true);次にメッセージが実際にトリガされるかどうかを確認し、そこから取得して、検証するコントロールがいくつかのバリデータに割り当てられていることを確認します。これは意味がありますか? – MethodMan
@KP - そうです。あなたは私の意見を含んでいますか? –