【问题标题】:Call to js function from code-behind not working?从代码隐藏调用 js 函数不起作用?
【发布时间】:2013-09-03 16:19:10
【问题描述】:

我想在我的 aspx 页面中调用一个 js 函数。我正在使用 ClientScript 路由。但是,我查看了几个论坛,但它似乎不起作用。我希望它很简单。我已经尝试过使用和不使用“页面”。

我的后台代码:

   protected void btOpen_Click(object sender, EventArgs e)
    {
        Session["demog"] = 144;
        Page page = HttpContext.Current.CurrentHandler as Page;
        page.ClientScript.RegisterStartupScript(this.GetType(), "closeWindow", "closeWin();", true);
    }

js函数:

    <script type="text/javascript">

        function closeWin() {
            alert("closing!");
              GetRadWindow().close();
          }
        function GetRadWindow() {
            var oWindow = null;
            if (window.radWindow)
                oWindow = window.radWindow;
            else if (window.frameElement.radWindow)
                oWindow = window.frameElement.radWindow;
            return oWindow;
        }
      </script>


            <telerik:RadButton ID="btnOpen" runat="server" Text="Open" OnClick="btOpen_Click">
                               <Icon PrimaryIconCssClass="rbOpen" PrimaryIconLeft="4" PrimaryIconTop="4"></Icon>
                          </telerik:RadButton>
               </telerik:RadAjaxPanel>

我有一个取消按钮,它调用 closeWin() 作为它的 onClientClick 并且工作正常。会不会是因为我使用的是 onClick,而不是 onClientClick 之类的?

【问题讨论】:

  • 您的 OnClick 将调用 btOpen_Click 服务器端代码。这不是你想要的吗?
  • 是的,然后我想在btOpen_Click结束时调用js函数
  • @WillTuttle - 研究 jQuery 和调用服务器端执行操作的方法,而不是尝试让 ASP.NET 页面生命周期与 JavaScript 一起运行。我建议使用 ASP.NET 页面方法将您的数据保存到服务器端会话缓存,然后 jQuery AJAX 调用的成功回调可以调用您的 closeWin() 函数。您越远离 ASP.NET 回发周期,就可以避免尝试获取客户端功能的麻烦。
  • 看看这个:stackoverflow.com/questions/6215722/… 和你的问题类似。

标签: javascript asp.net


【解决方案1】:

尝试使用 ScriptManager

ScriptManager.RegisterStartupScript(Page, typeof (Page), UniqueID, 
  "closeWin();", true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多