【问题标题】:Close button to Facebox Jquery box closes master page, not popupFacebox Jquery 框的关闭按钮关闭母版页,而不是弹出窗口
【发布时间】:2012-10-15 16:39:35
【问题描述】:

我正在使用 Facebox jquery 框加载一个带有提交按钮和取消按钮的小表单。

当我单击提交时,它会关闭加载 Facebox 窗口而不是 Facebox 窗口的主页!它使 AddNote.aspx 站点保持打开状态(由 Facebox 加载)并关闭我的 Main.aspx。

这是我在 AddNote.aspx 中的代码(由 Main.aspx 上的 Facebox 弹出窗口呈现):

    protected void SubmitButtom_Click(object sender, EventArgs e)
    {

        string note = NotesTextBox.Text;

        //will need to add current user

        using (cmd = new SqlCommand("INSERT INTO notes (FID, note_date, note_text) VALUES (@FID, @note_date, @note_text)", con))
        {
            con.Open();
            cmd.Parameters.Add(new SqlParameter("FID", FID));
            cmd.Parameters.Add(new SqlParameter("note_date", DateTime.Now.ToString()));
            cmd.Parameters.Add(new SqlParameter("note_text", note));
            cmd.ExecuteNonQuery();
            con.Close();
            Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "closeModal", "$.facebox.close();");              //WHY DOES THIS CLOSE MAIN.ASPX INSTEAD OF FACEBOX WINDOW?                  
        }           

    }

【问题讨论】:

    标签: c# javascript jquery asp.net


    【解决方案1】:

    欢迎使用 ASP.NET

    您正在使用服务器端代码来处理此表单。这意味着您必须执行 ASP.NET 所称的“回发”。这意味着页面上的form 正在将数据提交回自身进行处理。由于“提交”按钮是触发它的按钮,因此您的处理程序会被调用。

    这里重要的是,这需要访问服务器。表单正在提交,在普通 HTTP 中(因此在 ASP.NET 中,因为它是为 HTTP 处理构建的框架),意味着页面刷新。浏览器说“哦!正在提交表单!是时候向服务器发出请求,并等待响应。我现在可能可以卸载我拥有的页面了。”确实如此。

    为了做你想做的事,请查看“AJAX”或异步 XMLHttpRequest。它们是一样的,除了一个更流行。

    【讨论】:

    • 我也尝试在 OnClientClick 中注册关闭窗口功能,但它具有相同的行为。我以前使用过更新的面板等,但我不确定 AJAX 将如何帮助我关闭此窗口。我会调查的。
    • OnClientClick 必须是 JavaScript 函数。我很确定它不能是 C# 函数。 AJAX 会有所帮助,因为它允许您在不刷新整个页面的情况下将表单信息提交到服务器。然后您可以使用 JavaScript 关闭窗口。
    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 2011-04-14
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多