ASPX页面中的用户控件无法使用javascript

时间:2012-03-26 20:09:40

标签: c# javascript asp.net user-controls

我有一个用c#编写的非常简单的用户控件并编译成一个dll。我使用对象标记将该控件放入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>

然后

   <script type="text/javascript">
  $(function() {
var mfc = $('#fileBrowserControl')[0];
alert(mfc.theFile);
  });

当我加载页面时,MessageBox显示构造函数已触发,但javascript警报为组件字符串提供了“undefined”。这是一个精简版,在真实版本中,我也无法从javascript调用公共函数。我收到错误,'对象不支持此属性或方法。'

我显然错过了一些非常简单的东西,但我没有看到它。谢谢你的帮助。 乔恩

2 个答案:

答案 0 :(得分:1)

是的,ASP.NET托管代码没有自动挂钩到客户端脚本,你必须自己连接。我的建议是:

1)将UserControl创建为Web UserControl

2)在您的aspx页面上注册:http://msdn.microsoft.com/en-us/library/sbz9etab.aspx

3)在用户控件的代码隐藏中,加载后,使用以下内容将“theFile”属性值推送到控件的脚本中:

Page.ClientScript.RegisterStartupScript(Page.GetType(),"inject","var theFile='" + this.theFile + "';",true);

4)然后,您可以使用“theFile”变量

在JavaScript中访问该值

答案 1 :(得分:0)

解决!感谢您的投入。

这是一篇文章,展示了如何: http://www.olavaukan.com/2010/08/creating-an-activex-control-in-net-using-c/