call a Javascript function from ascx page code behind
我正在使用以下客户端脚本将值传递给 javascript 函数。它在 aspx 页面中工作正常,但在 ascx 页面中,它不起作用。请帮我解决这个问题。
1 | ScriptManager.RegisterStartupScript(this, this.GetType(),"tabmvng","<script language='javascript'>SetActiveTab(3);", false); |
试试这个,都是因为UserControl,你不再处理一个Page。
1 | ScriptManager.RegisterClientScriptBlock(this.Page, typeof(UpdatePanel), UniqueID,"myFunction('" + parameter +"');", true); |
1 2 3 | Control Caller = this; //user control string MyScript="SetActiveTab(3);"; ScriptManager.RegisterStartupScript(Caller, typeof(Caller),"Script Name", MyScript), true); |
通过脚本管理器在将脚本从该用户控件添加到页面对象时遇到问题,请使用对调用用户控件的引用。此外,它将为您package脚本,因此无需添加脚本标签。
编辑注意:我假设这个函数存在于你的脚本中的某个地方:
试试下面的
1 2 3 4 5 6 7 | <script type='text/javascript'> function SetActiveTab(a){ alert(a); } ScriptManager.RegisterStartupScript(this, this.GetType(),"tabmvng","SetActiveTab(3);", true); |
1 | ScriptManager.RegisterStartupScript(this.Page, typeof(System.Web.UI.Page),"javascript","YourScript", true); |
我遇到了同样的问题,即 Javascript 不在 html 输出中。事实证明,如果您是从 ascx (控件)执行此操作,则必须传递对控件的引用,例如 Me.
1 | ScriptManager.RegisterStartupScript(Me, GetType(Page), Guid.NewGuid().ToString(), jscript, True) |
之后,一切都开始工作了!谢谢马克舒尔泰斯!