自定义服务器控件触发页面加载JS文件

时间:2016-01-23 05:17:11

标签: c# asp.net c#-4.0 custom-controls

Visual Studio 2013,C#代码。

要求明确定义为使用从WebControl基类继承的自定义服务器控件。

  [ToolboxData("<{0}:SampleTemplate runat=server></{0}:SampleTemplate>")]
        public class SampleTemplate : WebControl, INamingContainer
        {
            Private Button btnCustomer;
            Private Label lblCountry;
            private const string _JAVASCRIPT_URL = "/Scripts/ServerControlUtility/Customer.js";

已初始化按钮&amp; CreateChildControls事件中的标签控件。

protected override void CreateChildControls()
        {
            Controls.Clear();
            lblCountry = new Label();
            lblCountry.ID = "Country";

            btnCustomer = new Button();
            btnCustomer.ID = "btnLookUpAddress";
            btnCustomer.Text = "Look Up Address";
            Controls.Add(btnCustomer);
        }

使用Custom Server Control中的PageScriptManager注册了JS文件。 CustomerJS文件,与此控件相关,负责管理客户端功能。

使用Render / OnLoad事件注册脚本。

protected override void Render(HtmlTextWriter writer)
        {
            var p = (Page)System.Web.HttpContext.Current.Handler;
            ScriptManager.RegisterClientScriptInclude(p, p.GetType(), "CustomerExtendedScript", _JAVASCRIPT_URL);

        }

问题是:在完全渲染主页面之前调用Customer.JS文件但是当实际使用自定义控件的页面完全加载时,希望它被触发。就像Jquery中的 document.ready 函数一样。

重点:  1.服务器控件应该是独立的实体,所以不能使用Jquery     插件(或任何其他)
 2. Customer.Js文件是纯Javascript文件
 3.无需在主页面中再次添加Customer.JS文件引用     原因开始引用已经存在于自定义服务器控件

主要问题: 1.如何调用Customer.JS文件,以便在主页完全加载后加载它。 2. Customer.JS文件应仅在自定义服务器控制中引用,而不再在其他地方引用。

1 个答案:

答案 0 :(得分:1)

使用

ClientScript.RegisterStartupScript

这将在</body>标记之后加载javascript,因此页面应该已经加载。

相关问题