小编Mic*_*ood的帖子

如何判断 ASP 中的页面卸载是否为 PostBack

这似乎是一个常见问题,但搜索没有返回任何内容。

我有以下在页面卸载之前执行的代码。问题是如果卸载是回发,我不想向用户发出警告,但我无法弄清楚如何区分回发和导航到的用户例如另一个页面。

// This is executed before the page actually unloads
        $(window).bind("beforeunload", function () {

            if (prompt) {

                //prompt
                return true;
            }
            else {

                //reset our prompt variable
                prompt = true;
            }
        })
Run Code Online (Sandbox Code Playgroud)

在后面的代码中运行脚本,即如果 Page.IsPostBack 然后设置提示不是一个选项。

有任何想法吗?

编辑:

这是我最终得到的解决方案:

 function DoNotPrompt() {
              prompt = false;
        }
Run Code Online (Sandbox Code Playgroud)

然后我将它添加到所有控件中,用户可以在其中执行一些导致回发的操作。

OnClientClick="DoNotPrompt()
Run Code Online (Sandbox Code Playgroud)

然后检查这个标志,如果用户真的离开页面,即不是回发,则只在“beforeunload”中返回一个字符串。

我还必须使用以下代码: var magicInput = document.getElementById('__EVENTTARGET');

    if (magicInput && magicInput.value) {
        // the page is being posted back by an ASP control 
        prompt = false;
    }
Run Code Online (Sandbox Code Playgroud)

原因是我有一个自定义用户控件,它是一个列表框,我无法添加上述方法。所以用它来捕获该事件并将标志设置为 false。

不是最优雅的解决方案。

谢谢,迈克尔

javascript asp.net jquery

5
推荐指数
1
解决办法
5770
查看次数

当设置为ModalPopupExtender TargetControlID时,后面的链接OnClick代码不会执行

我做了很多搜索,无法解决这个问题.

我有一个ModalPopupExtender弹出窗口,我想在用户点击链接DoSomething时显示.弹出窗口有一个下拉控件,当用户要求打开对话框时,我想立即填充该控件.这需要通过后面的代码在服务器端发生.目前我正在尝试通过链接上的OnClick事件来完成它,但只要链接绑定到ModalPopupExtender,就不会执行链接OnClick代码.

代码段:

<asp:LinkButton ID="lnkDoSomething" runat="server" onClick="lnkDoSomething_Click">Do Something</asp:LinkButton>
<asp:ModalPopupExtender ID="mpelnklnkDoSomething" runat="server" BackgroundCssClass="modalBackground"
    DropShadow="true" PopupControlID="lnkDoSomething"
    PopupDragHandleControlID="pnlDragHandlerForlnkDoSomething"   
    TargetControlID="lnklnkDoSomething"></asp:ModalPopupExtender>
Run Code Online (Sandbox Code Playgroud)

问题是,只要我将ModalPopupExtender设置为OnClick代码不执行的链接.这显然是设计的,但它对我来说没有意义(天真),好像用户点击应该执行OnClick代码的链接.

任何想法为什么不支持这个以及正确的解决方案是什么?

c# asp.net ajax asp.net-ajax ajaxcontroltoolkit

4
推荐指数
1
解决办法
7908
查看次数

在询问用户是否要离开之前检查 ASP 页面是否脏

我有一个 ASP.NET 表单,它有一堆用户输入、文本框、复选框等。我需要能够检查用户是否在不保存的情况下对表单进行了编辑,如果是这样,则在卸载之前提示。

我有一个脏标志,一旦用户编辑了其中一个文本框,就会设置该标志。如果他们将数据保存在表单上,​​那么我会重置标志。因此,只有在用户编辑但尚未保存时才应设置该标志。

然后我使用这个标志来决定是否提示用户“你确定要离开这个页面吗?”

代码片段:

var _isDirty = false;

    $(function () {
        try {
                $("#MainContent_txtSometextBox").change(function () {
                    _isDirty = true;
                });
            } catch (e) { }
        });
Run Code Online (Sandbox Code Playgroud)

问题是我不想在每个控件上都设置它。是否可以在页面级别设置它?我认为这不会那么容易,因为我们在页面上还有自定义用户控件。

javascript asp.net jquery

2
推荐指数
1
解决办法
2516
查看次数