在Ajax.BeginForm提交时显示加载器

12

提交表单时,最好的方法是如何显示加载程序并禁用按钮:

@using (Ajax.BeginForm(MVC.Account.Login(), new AjaxOptions { OnSuccess = "onLoginSuccess" }, new { @id = "loginForm" }))
{
  <div id="logbtn">
    <input type="submit" name="invisible" class="subinvisible"/> 
    <p>@HeelpResources.AccountLoginViewLoginButtonLabel</p>
    <img src="~/Content/Images/ui-symb-arrow-right-white-15x15.png" width="13" height="12" />
  </div>
}

加载器图片文件为

<img src="~/Content/Images/ui-loader-white-16x16.gif" />

也许可以在BeginForm的OnBegin中显示加载器,在OnComplete中隐藏?但是我该如何更改图片?

有什么建议可以找到好的免费加载器吗?

谢谢

1个回答

33

将您的加载图像标签放置在一个类似于这样的 div 标签中:

<div id="loading">
    <img src="~/Content/Images/ui-loader-white-16x16.gif" />
</div>
在你的CSS文件中:
div#loading { display: none; }

并且,在你的表单中:

@using (Ajax.BeginForm(MVC.Account.Login(), 
  new AjaxOptions { OnSuccess = "onLoginSuccess", LoadingElementId = "loading", 
    OnBegin = "onLoginBegin" }, 
  new { @id = "loginForm" }))
{
  <div id="logbtn">
    <input type="submit" name="invisible" class="subinvisible"/> 
    <p>@HeelpResources.AccountLoginViewLoginButtonLabel</p>
    <img src="~/Content/Images/ui-symb-arrow-right-white-15x15.png" width="13" height="12" />
  </div>
}

同时,在您的视图中添加一个脚本:

<script type="text/javascript">
    function onLoginBegin()
    { 
        // Disable the button and hide the other image here 
        // or you can hide the whole div like below
        $('#logbtn').hide();
    }
</script>

嗨,谢谢!但是你把加载图像放在哪里?如何用加载器替换ui-symb-arrow-right-white-15x15.png图像? - Patrick
抱歉,我错过了。您将加载图像放在隐藏的div中。并且,在您的ajax表单中使用隐藏div的id作为LoadingElementId。为了隐藏其他图像并禁用按钮,您可以使用AjaxOptions类的OnBegin属性。请查看更新后的答案。 - ataravati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接