将JavaScript附加到ASCX客户端实例的原型
如何对ASCX控件进行编码,以便提供ID并从浏览器运行一些javascript,例如将JavaScript附加到ASCX客户端实例的原型,javascript,asp.net,ascx,prototype-programming,Javascript,Asp.net,Ascx,Prototype Programming,如何对ASCX控件进行编码,以便提供ID并从浏览器运行一些javascript,例如 $find('myASCXControlClientId') 返回的对象有一个类,它有一个原型,这个原型有我的自定义javascript方法,可以在控件的实例上调用它 例如,像RadTreeView这样的Telerik控件可以做到这一点 他们用Javascript获取的控件有一个原型,其中包含一些定义清晰的方法。 如何使用ASCX实现这一点?您上面显示的RadControl可能已实现为而不是UserCont
$find('myASCXControlClientId')
返回的对象有一个类,它有一个原型,这个原型有我的自定义javascript方法,可以在控件的实例上调用它
例如,像RadTreeView这样的Telerik控件可以做到这一点
他们用Javascript获取的控件有一个原型,其中包含一些定义清晰的方法。
如何使用ASCX实现这一点?您上面显示的RadControl可能已实现为而不是UserControl(具有额外的.ASCX文件) 您可能已经知道ScriptControl类完全按照您的要求执行,当您执行
$find(elementid)
时,它返回控件的实际javascript对象
我讨厌ScriptControl的问题是,您基本上必须通过编程方式构建控件的DOM元素,方法是在Load
或PreRender
期间向控件的ChildControls
集合添加.NET对象,如Table
和Label
我看到的一个有效选项是创建一个包含属性和方法的ScriptControl,然后使用ascx UserControl将其包装:
脚本控件示例:
public class MyScriptControl : System.Web.UI.ScriptControl
{
public string MyProperty { get; set; }
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
//your implementations
}
protected override IEnumerable<ScriptReference> GetScriptReferences()
{
//your implementations
}
}
public partial class MyUserControl : System.Web.UI.UserControl
{
protected override void OnLoad(EventArgs e)
{
this.MyLabel.Text = this.MySpecialScriptControl.MyProperty;
base.OnLoad(e);
}
}
.ascx示例:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Example.ascx.cs" Inherits="Example" %>
<div>
<asp:Label id="MyLabel" runat="server" />
<my:MyScriptControl id="MySpecialScriptControl" runat="server" />
</div>
var myScriptControl = $find('MySpecialScriptControl');