首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端脚本和获取回调事件引用。

客户端脚本和获取回调事件引用。
EN

Stack Overflow用户
提问于 2009-11-07 02:56:56
回答 1查看 2.4K关注 0票数 1

有没有人能帮我逐行描述一下下面的代码。

代码语言:javascript
复制
protected override void OnPreRender(EventArgs e)
        {
            String eventRef = Page.ClientScript.GetCallbackEventReference(this, "", "", "");

            // Register include file
            String includeScript = Page.ResolveClientUrl("~/ClientScripts/AjaxValidator.js");
            Page.ClientScript.RegisterClientScriptInclude("AjaxValidator", includeScript);

            // Register startup script
            String startupScript = String.Format("document.getElementById('{0}').evaluationfunction = 'AjaxValidatorEvaluateIsValid';", this.ClientID);
            Page.ClientScript.RegisterStartupScript(this.GetType(), "AjaxValidator", startupScript, true);

            base.OnPreRender(e);
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-07 06:24:52

代码语言:javascript
复制
String eventRef = Page.ClientScript.GetCallbackEventReference(this, "", "", "");

GetCallbackEventReference方法通过JavaScript WebForm_DoCallback函数返回一个字符串,该函数对服务器执行带外回调。它还向客户机呈现一个脚本标记,并将其源属性设置为WebResource.axd。WebResource.axd是一个HTTP Handler,它允许下载程序集中嵌入的资源。资源包含WebForm_DoCallback函数。带有WebForm_DoCallback函数的eventRef字符串永远不会注入到客户机中,并且参数都是空的,因此我假设此行仅用于将WebResource.axd输出到页面。

String includeScript = Page.ResolveClientUrl("~/ClientScripts/AjaxValidator.js"); Page.ClientScript.RegisterClientScriptInclude("AjaxValidator", includeScript);

第一行获取外部JavaScript文件'AjaxValidator.js‘的相对路径。第二行注入一个客户端脚本标记,其源代码设置为ResolveClientUrl返回的外部JavaScript文件的路径。

String startupScript = String.Format("document.getElementById('{0}').evaluationfunction = 'AjaxValidatorEvaluateIsValid';", this.ClientID); Page.ClientScript.RegisterStartupScript(this.GetType(), "AjaxValidator", startupScript);

最后两行中的第一行创建要呈现给客户机的JavaScript代码。在页面完成加载但页面的OnLoad事件引发之前,将执行由RegisterStartupScript方法添加的脚本块。'evaluationfunction‘被设置为在客户端验证页面时要调用的方法,它由位于WebUIValidation.js脚本中的ValidatorValidate方法调用( WebResource.axd也用于检索此文件)。这一行脱离上下文没有多大意义。我假设PreRender事件是从BaseValidator类继承的自定义验证器控件的一部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1689576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档