1
所以,我正在编写一个自定义验证器来验证Ajax Toolkit的Rating控件。尽管如此,客户端验证并未解决。客户端验证不会触发我的自定义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')
。
(一切正常,服务器端)
编辑标记:
<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.";
愚蠢的问题 - 但你有你的'ControlToValidate'属性在验证器上定义?一件事情可能导致什么都不会发生。 – 2012-02-16 15:11:11
你试过看看是否只有警报会触发..尝试像这样的字符串strMessage =“Hello World”string script =“alert('”+ strMessage +“');”; ClientScript.RegisterClientScriptBlock(this.GetType(),“Alert”,script,true);然后看看它是否会实际触发消息..然后从那里拿到它,以确保您的控件验证分配给一些验证程序..这是否有道理..? – MethodMan 2012-02-16 15:14:39
@KP - 是的。你想包括我的观点吗? – 2012-02-16 15:16:56