MVC Jquery Progress Spinner提交

如何解决MVC Jquery Progress Spinner提交

| 问候, 任何人都可以帮助我如何在单击按钮时使用ASP.NET MVC来实现Jquery Progress Spinner。 先感谢您。     

解决方法

$.ajax({
type=\"get\",url=\"someurl.html\",dataType:\"html\",beforeSend(jqXHR,settings)
{
     //append spinner image to some html element
},success:function(data)
{
    //manipulate data
},Complete:(jqXHR,textStatus)
{
    //Remove spinner from the page
}
});
    ,我最终使用了这些丰富的资源: http://contextllc.com/dev_tools/jQuery/showLoading/latest/jquery.showLoading.example.html http://ajaxload.info/ 简单容易。     ,所以我发现了这个问题,正是我在寻找的问题,但是我不喜欢官方回答的概念...为什么?使用AJAX提交表单很好,但是您失去了ASP MVC的功能,并且失去了向视图返回
@model
的概念,并且通过使用AJAX,您还必须更改很多代码以返回AJAX / JSON响应(将ActionResult的返回值更改为JsonResult等)。我不想失去带有
return View(model)
ActionResult
的输出,因为它非常方便(尤其是挂钩到模型的jQuery Validation)...所以我想出了以下方法:
@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    ...

    <div class=\"form-group\">
        <button id=\"saveBtn\" type=\"submit\" class=\"btn btn-primary\">Save</button>
        @Html.ActionLink(\"Back to List\",\"Index\")
    </div>
}

@section Scripts {
    <!-- jQuery ASP Validation -->
    @Scripts.Render(\"~/Scripts/jqueryval\")

    <script type=\"text/javascript\">
        $(document).ready(function () {
            // clear error summary from inside our global variable (defined in _layout view)
            window.App.errorSummary = {};

            // Attach click handler to the submit button
            // from there,attach a spinner but only if no error summary are showing
            $(\'#saveBtn\').click(function () {
                // has to be inside a timer else it would be triggered too late
                setTimeout(function () {
                    if (window.App.errorSummary.numberOfInvalids < 1) {
                        // your spinner here... in my case spinner.js
                    }
                },50);
            });
        });
    </script>
}
并且您还必须扩展jQuery Validator对象,但是最好在
_Layout
视图中扩展它,从那里我的代码如下所示:
window.App = {
    baseUrlArea: \'@((ViewContext.RouteData.Values[\"area\"] == null) ? \"\" : ViewContext.RouteData.Values[\"area\"])\',baseUrl: \'@Url.Content(\"~/\")\',language: \'@((ViewContext.RouteData.Values[\"language\"] == null) ? \"en\" : ViewContext.RouteData.Values[\"language\"])\',controller: \'@ViewContext.RouteData.Values[\"controller\"]\',action: \'@ViewContext.RouteData.Values[\"action\"]\',errorSummary: {}
};

$(document).ready(function () {
    // extend the jquery validator object to keep track of error summary 
    // save summary inside the global (window.App) variable
    if (typeof $.validator !== \"undefined\") {
        $.validator.setDefaults({
            showErrors: function (errorMap,errorList) {
                window.App.errorSummary.numberOfInvalids = this.numberOfInvalids();
                window.App.errorSummary.errorMap = errorMap;
                window.App.errorSummary.errorList = errorList;

                $(\"#summary\").html(\"Your form contains \"
                  + this.numberOfInvalids()
                  + \" errors,see details below.\");
                this.defaultShowErrors();
            }
        });
    }            
});
您可能会想,为什么还要烦恼7英镑?好吧,这样做不是会使“微调器”在单击“保存”按钮时显示,尽管我们只希望它在“验证错误摘要”为空时显示...有意义吗?因此,您可以使用jQuery验证重新获得ASP / MVC的全部功能!而且我们的微调器仅在必须显示时显示。甜!!! :)     ,在ASP.NET MVC中调用Action方法时,在页面中心显示加载动画     ,假设您在执行过程中要处理500个项目(文件/任何文件),... 您必须单独处理每个项目。 然后遍历所有项目并: 在处理单个项目的ItemController中对$'ajale'动作进行$ .ajax调用 返回一个json结果代码 如果可以,则将jquery progress上移一级 如果失败,则执行下一个,或取消整个过程(根据您的要求)     ,您可以使用ajaxStart / ajaxStop。 jQuery 1.8示例:
$(document).ready(function () {
        $(\"#btnShowSpinner\").click(ajaxToExecute); // wire up click event for the button
        (function () { $(\"#loading\").hide(); })(); // hide the spinner initially
        $(document).ajaxStart(function () { $(\"#loading\").show(); }); // show spinner when ajax request executes
        $(document).ajaxStop(function () { $(\"#loading\").hide(); });// show spinner when ajax request completes
});
在页面标记中,添加一个包含微调器的div以显示给用户:
<input id=\"btnShowSpinner\" type=\"button\" value=\"Show Spinner\" />
<div id=\"loading\"><img src=\"spinner.gif\" /></div>
Ajax呼叫:
function ajaxToExecute() {
    $.ajax({
        cache: false,type: \"POST\",url: myURL
        data: { \"id\": id},success: function (data) {
            updateDiv.html(data);
        },error: function (xhr,ajaxOptions,thrownError) {
                   alert(\'Request failed.\\nError: \' + thrownError);
               }
    });
}
这种设计还可以将微调器重新用于页面上的任何其他ajax请求。     ,对于这个问题,聚会晚了,但是任何寻求NONE AJAX方法或使用html.BeginForm的人都可以在这里找到答案。 通过Html.BeginForm提交激活加载动画 答案摘要(如果已删除或链接中断): 首先,向表单添加一个ID,以便您可以使用JQuery来获取它:
@using (Html.BeginForm(\"SData\",\"Crawl\",FormMethod.Post,new { id = \"myform\" }))
{
    // the form
}
接下来,添加一个Javascript事件处理程序以拦截表单提交并显示正在加载的GIF。
$(\"#myform\").submit(function(e) {
    $(\"#myLoadingElement\").show();
});
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?