每次加载页面时都运行javascript

时间:2016-09-13 09:51:31

标签: javascript c# jquery asp.net twitter-bootstrap

在我的网络应用程序中,我有一个包含加载栏的模态弹出窗口。我将其显示在任何我知道将需要几秒钟执行的命令上,按钮单击等。

除了一个复杂功能之外,目前工作正常,它运行的内部Web服务器非常糟糕,根据用户数量的不同,可以减慢导航到页面等简单任务的速度。

如果每次页面考虑做某事而不必对每个可能的场景进行硬编码,我怎样才能获得加载模式?

我的网络应用程序正在使用包含模态代码的母版页。

由于

脚本

function ShowLoading() {
    $('#modalLoading').modal({ backdrop: 'static', keyboard: false, show: true });
}

function HideLoading() {
    $('#modalLoading').modal('hide');
}

ASPX

<div id="modalLoading" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-body">
                <h2>
                    Please Wait...</h2>
                <div class="progress">
                    <div class="progress-bar progress-bar-striped active" role="progressbar" style="width: 100%">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

C#Class

public void loadingAlert()
{
    var page = HttpContext.Current.CurrentHandler as Page;
    page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "$(function () { ShowLoading(); });", true); 
}

2 个答案:

答案 0 :(得分:1)

在您的javascript中设置BeginRequestHandlerEndRequestHandler,如下所示:

$(document).ready(function () {
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
});

function BeginRequestHandler(sender, args) {
    var postBackId = args._postBackElement.id;

    // Here you can add some exceptions if you want
    if (postBackId != "control_exception_1" && postBackId != "control_exception_2") {
        ShowLoading();
    }
}

function EndRequestHandler(sender, args) {
    HideLoading();
}

最小的ASP.NET控件:form runat服务器,ScriptManagerUpdatePanel。 您可以选择将UpdateMode的{​​{1}}设置为UpdatePanel(设置控件的ID以触发Conditional中的UpdatePanel)或Triggers(您可以删除Always元素。

Triggers

答案 1 :(得分:0)

FORM SUBMIT

您必须使用button.label.set_markup(pangoMarkupString)

把它放在&#39; Page Init&#39;或者&#39; Page Render&#39;基类或主页中的事件,并使所有的aspx页扩展到这个基类。

AJAX请求

在这种情况下,您应该在Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "alert", "$(function () { ShowLoading(); });");对象中附加jquery事件ajaxSend。把它放在你的母版页中:

document