0

您好,我在这篇文章中遇到了同样的问题:

当 onBegin 失败时,Ajax.BeginForm 没有隐藏加载元素,但我还没有找到解决方法。

基本上,当我将 Ajax.BeginForm 与 OnBegin 函数一起使用并且此函数返回 false 时,仍会显示正在加载的 elementID,并且它再也不会隐藏。

这是我正在测试它的代码:

function isValid() {
    return false
} 


<% using (Ajax.BeginForm("LogIn", "Security", new { ReturnUrl = Request["ReturnUrl"] }
       , new AjaxOptions { UpdateTargetId = "resultErrors", OnBegin = "isValid", LoadingElementId = "updatePanel" }))
{ %>
4

1 回答 1

1

我不记得确切的解决方案,我很久以前就决定编写自己的普通 Html 来处理 Ajax 调用要好得多。

如果你愿意,你可以在这里发布你的代码,我可以告诉你如何用 JQuery 来做。

现在,如果您想坚持使用此解决方案,您仍然可以使用 JQuery 手动隐藏元素,如下所示:

<% using (Ajax.BeginForm("LogIn", "Security", new { ReturnUrl = Request["ReturnUrl"] }
   , new AjaxOptions { UpdateTargetId = "resultErrors", OnBegin = "isValid", LoadingElementId = "updatePanel" }))
{ %>

<script type="text/javascript" language="javascript" src="<%=Url.Content("~/Scripts/jquery-1.4.1.js") %>">//Jquery reference
</script>

<script type="text/javascript" language="javascript">
   function isValid() {
       if (true) // In case i whant to return true
       {
           return true;
       }
       else // I whant to return false
       {
           $('#updatePanel').hide(); // Manually hide the LoadingElementId
           return false;
       }
   }    
</script>
于 2010-10-22T12:44:57.107 回答