C# 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() {

我有一个非常简单的用户控件,用c#编写并编译成dll。我使用object标记将该控件放入aspx页面,然后尝试用javascript处理它。我有其他的控制,工作得很好,但出于某种原因,这一个没有。代码如下:


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);