javascript - 在 ascx.cs 用户控件中执行 javascript

标签 javascript c# asp.net wpf obout

我正在向我的 ascx.cs 用户控件动态添加控件,因此我还需要从我的 ascx.cs 用户控件动态执行 javascript 代码。

我正在使用以下方式执行我的 JavaScript:

Page.ClientScript.RegisterStartupScript(typeof(Page), "reOpen", "<script type='text/javascript'> reOpenClick(); </script>")

这是我在 ascx 文件中的 javascript

<%@ Register Assembly="obout_Window_NET" Namespace="OboutInc.Window" TagPrefix="obout" %>

<obout:Window runat="server" ID="ow_dialog" Width="200" Height="50"
    Title="Open" IsModal="true" ShowCloseButton="true"
    StyleFolder="~/Styles/obout/window/grandgray" VisibleOnLoad="false">    
   .
   .
   .
   .
</obout:Window>

<script type="text/javascript">

    function reOpenClick() {
        ow_dialog.setTitle("Open");
        ow_dialog.screenCenter();
        ow_dialog.Open();
    }

</script>

像往常一样运行代码时,我收到错误ReferenceError:ow_dialog未定义。但是,当在网络浏览器的控制台中输入 reOpenClick() 时,一切都运行正常。

当我在控制台中输入函数正常工作时,为什么会收到 ReferenceError: ow_dialog is not Defined

最佳答案

将脚本标签添加到标记中

<script type="text/javascript">
   // place your javascript here
</script>


<script type="text/javascript" href="path to js file" />

在控件的 load 事件中,执行如下操作:

if (!Page.ClientScript.IsClientScriptIncludeRegistered("keyName"))
    Page.ClientScript.RegisterClientScriptInclude("keyName",
        Page.ResolveUrl("~/Scripts/jsfile.js"));

如果用户控件位于 UpdatePanel 中并且/或其 Visible 属性默认设置为 false,您将得到“Object Expected” 错误,因为当页面加载时您的脚本加载,并且您调用的函数不存在。

解决此问题的方法是在 main 中的用户控件中使用 style="display:none" 而不是 Visible="false" > 页。

关于javascript - 在 ascx.cs 用户控件中执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983372/

相关文章:

javascript - Chart.js 中背景的多范围突出显示

c# - 泛型的问题

c# - 在代码隐藏中获取文本区域

c# - 比较日期时间的空值

javascript - 是否可以为单个谷歌地图图 block 添加一个监听器?

javascript - 多点触控桌面浏览器

javascript - 在我的示例中如何将值插入数组?

c# - 如何将结构定义为属性?

c# - Entity Framework - 一对多 - 从两个表中选择

c# - 获取asp :Hyperlink data-attribute through onclick event