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文件应仅在自定义服务器控制中引用,而不再在其他地方引用。
答案 0 :(得分:1)
使用
ClientScript.RegisterStartupScript
这将在</body>
标记之后加载javascript,因此页面应该已经加载。