C# ASPX页面中的用户控件不使用javascript
我有一个非常简单的用户控件,用c#编写并编译成dll。我使用object标记将该控件放入aspx页面,然后尝试用javascript处理它。我有其他的控制,工作得很好,但出于某种原因,这一个没有。代码如下:C# ASPX页面中的用户控件不使用javascript,c#,javascript,asp.net,user-controls,C#,Javascript,Asp.net,User Controls,我有一个非常简单的用户控件,用c#编写并编译成dll。我使用object标记将该控件放入aspx页面,然后尝试用javascript处理它。我有其他的控制,工作得很好,但出于某种原因,这一个没有。代码如下: using System.Windows.Forms; namespace FileBrowser { public partial class theBrowser : UserControl { public theBrowser() {
using System.Windows.Forms;
namespace FileBrowser {
public partial class theBrowser : UserControl {
public theBrowser() {
InitializeComponent();
MessageBox.Show("TBI");
}
public string theFile = "foobar";
}
}
以下是网页代码:
<object id='fileBrowserControl' classid='http:FileBrowser.dll#FileBrowser.theBrowser'>
<span>File control did not initialize.</span>
文件控件未初始化。
然后
$(函数(){
var mfc=$('#fileBrowserControl')[0];
警报(mfc.theFile);
});
当我加载页面时,MessageBox显示构造函数已启动,但javascript警报为组件字符串提供“未定义”。这是一个精简版本,在真实版本中,我也不能从javascript调用公共函数。我得到错误,“对象不支持此属性或方法。”
我显然错过了一些非常简单的东西,但我看不出来。谢谢你的帮助。
Jon是的,ASP.NET托管代码不会自动连接到客户端脚本,您必须自己连接它。我的建议是: 1) 将UserControl创建为Web UserControl 2) 在您的aspx页面上注册: 3) 在用户控件的代码隐藏中,加载后,使用如下方式将“theFile”属性值推入控件的脚本:
Page.ClientScript.RegisterStartupScript(Page.GetType(),"inject","var theFile='" + this.theFile + "';",true);
4) 然后可以使用“theFile”变量在JavaScript中访问该值!谢谢你的意见 以下是一篇文章,展示了如何:
您是否打算使用Web用户控件而不是表单用户控件?这似乎无关紧要。我认为部分问题在于我制作的控件可以作为ActiveX控件使用,但我在VS2008中还没有弄清楚。您使用的是ASP.NET还是WinForms?嵌入html页面的windows窗体。这适用于公司内部网站中的应用程序。它需要访问本地计算机上的文件系统才能执行某些操作。它在完全信任的环境中运行。我的问题是早期版本的VisualStudio只是自动连接所有东西,但VS2008似乎没有。下面的链接提供了一个逐步指导,让COM的东西正常工作。
Page.ClientScript.RegisterStartupScript(Page.GetType(),"inject","var theFile='" + this.theFile + "';",true);