ASPX页面中的用户控件无法使用javascript
本文关键字:javascript 控件 用户 ASPX | 更新日期: 2023-09-27 18:29:07
我有一个用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警报为组件字符串提供"未定义"。这是一个精简版,在实际版本中,我也无法从javascript调用公共函数。我得到错误,"对象不支持此属性或方法。"
我显然错过了一些非常简单的东西,但我看不出来。谢谢你的帮助。Jon
是的,ASP.NET托管代码不会自动连接到客户端脚本中,您必须自己连接。我的建议是:
1) 将UserControl创建为Web UserControl
2) 在您的aspx页面上注册:http://msdn.microsoft.com/en-us/library/sbz9etab.aspx
3) 在用户控件的代码隐藏中,加载后,使用以下方法将"文件"属性值推送到控件的脚本中:
Page.ClientScript.RegisterStartupScript(Page.GetType(),"inject","var theFile='" + this.theFile + "';",true);
4) 然后,您可以使用"File"变量
已解决!感谢您的投入。
下面的一篇文章展示了如何:http://www.olavaukan.com/2010/08/creating-an-activex-control-in-net-using-c/