Javascript 当onBegin失败时,Ajax.begin不隐藏加载元素

Javascript 当onBegin失败时,Ajax.begin不隐藏加载元素,javascript,asp.net-mvc,asp.net-ajax,Javascript,Asp.net Mvc,Asp.net Ajax,我正在MVC应用程序中使用Ajax.BeginForm助手。下面是一个简化的示例: <% using (Ajax.BeginForm("actionName", new { Controller = "controller" }, new AjaxOptions { OnBegin = "doValidation", LoadingElementId = "ajaxLoader"

我正在MVC应用程序中使用Ajax.BeginForm助手。下面是一个简化的示例:

    <% using (Ajax.BeginForm("actionName", new { Controller = "controller" }, new AjaxOptions
           {
               OnBegin = "doValidation",
               LoadingElementId = "ajaxLoader"
           }))
       { %>

问题在于,如果OnBegin回调返回false(这正确地阻止了ajax调用),那么加载元素“ajaxLoader”仍然显示,而不是隐藏

我尝试过使用OnFailure和OnComplete回调,但是如果OnBegin回调失败,这两个回调都不会被调用

有趣的是,直到OnBegin函数返回后才显示加载元素


我可以通过在自定义javascript函数中显式显示和隐藏ajax加载元素来解决这个问题,但这似乎是助手应该真正为我处理的事情。

我会尝试运行if函数,以便在回调返回true时仅显示ajaxLoader。

我会尝试运行if函数,以便在回调返回true时仅显示ajaxLoader。

尝试将loading div上的显示样式设置为none。例如,您正在加载的pic

尝试将加载div上的显示样式设置为“无”。例如…你的加载图片

这几乎就是我要做的。我只是想知道是否有人知道为什么助手不为我做这件事。我不认为助手会这么做。但是我确实认为您的代码可能设置错误,是否可以在其他地方设置loadingelementid?doValidation看起来像什么?助手应该这样做。否则,如果loadingElementId选项与所有回调不兼容,那么它有什么意义呢?在我看来,这似乎是ajax助手中的一个bug/缺点。真丢脸,这正是我要做的。我只是想知道是否有人知道为什么助手不为我做这件事。我不认为助手会这么做。但是我确实认为您的代码可能设置错误,是否可以在其他地方设置loadingelementid?doValidation看起来像什么?助手应该这样做。否则,如果loadingElementId选项与所有回调不兼容,那么它有什么意义呢?在我看来,这似乎是ajax助手中的一个bug/缺点。羞耻。