【问题标题】:MVC3 - Ajax loading iconMVC3 - Ajax 加载图标
【发布时间】:2011-06-24 10:35:19
【问题描述】:

我想在 ActionResult 请求期间显示一个 AJAX 加载图标,该请求可能需要几秒钟来处理。

实现这一目标的最佳方法是什么?

我只想在构建它验证通过后显示图标(我使用的是 MVC3,EF Code First,所以验证会自动放在页面上)。

在 ActionResult 期间可能会有进一步的验证/异常,在这种情况下会向用户显示一条消息,然后我希望加载图标再次消失。

【问题讨论】:

标签: ajax asp.net-mvc asp.net-mvc-3 actionresult


【解决方案1】:

将您的链接定义为 Ajax 操作链接,并在页面某处指定旋转 GIF 的 ID。

<div id="result"></div>
<img id="spinner" src="../content/ajaxspinner.gif" style="display: none;">
@Ajax.ActionLink("Link Text", "ActionName", "ControllerName", null, new AjaxOptions{UpdateTargetId = "result", LoadingElementId = "spinner"}, null)

或者如果是表格:

@using(Ajax.BeginForm("Action", "Controller", null, new AjaxOptions{UpdateTargetId = "result", LoadingElementId = "spinner"}, null))
{
   @Html.TextBox("Data")<br/>
   <input type="submit" value="Submit" />
}

【讨论】:

  • @Chirs 感谢您的回复。这对我来说不太适用。 1. 当我按下提交时,我没有得到微调器图标 2. 当我从 ActionResult 将用户返回到页面时,它会在我的 URL 末尾添加“?Length=10”?我用了你的第二个例子
  • @Crhis 编辑:我在路由值属性中添加了“null”,它停止了“?Length=10”位。那么,只是它现在没有显示图标吗?
  • 这对我不起作用。任何人都可以提供帮助或提供替代方案吗?
【解决方案2】:

像这样将图像放在一个 div 标签中:

<div id="busydiv" style="display:none;"><img src="busything.gif" /></div>

然后像这样创建您的链接:

@Ajax.ActionLink("Link Text", "ActionName", "ControllerName", null, new AjaxOptions { LoadingElementDuration = 1000, LoadingElementId = "busyDiv", HttpMethod = "Post", UpdateTargetId = "targetDiv", OnFailure = "PostFailure", OnSuccess = "PostSuccess", OnComplete = "PostOnComplete" }, null)

或以一种形式这样做:

@using (Ajax.BeginForm("TestAjax", new AjaxOptions { LoadingElementDuration=1000, LoadingElementId="dave", HttpMethod = "Post", UpdateTargetId = "targetDiv", OnFailure = "PostFailure", OnSuccess = "PostSuccess", OnComplete = "PostOnComplete" }))

根据此处的文档,显然省略那些您不需要的 AjaxOptions:http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxoptions.aspx

【讨论】:

    【解决方案3】:

    只要我的两分钱:

    Chris 发布的解决方案有效并且可以工作但是您必须添加对下面两个 javascript 库的引用。请注意顺序很重要:

    <script src="~/scripts/jquery-1.8.0.js"></script>
    <script src="~/scripts/jquery.unobtrusive-ajax.js"></script>
    

    当您创建一个预先加载了捆绑和所有这些 nu-get 包的 MVC 应用程序时,这对您来说可能不是问题,但如果您像我一样创建了一个空的 ASP.NET MVC 应用程序,您可能会遇到问题.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2011-02-18
      • 2015-08-22
      相关资源
      最近更新 更多