使用asp.net mvc,我们可以在AjaxOptions OnSuccess等中添加什么?

问题描述

| 我似乎无法使用jquery引用DOM中的项目。 如何在OnBegin / OnSuccess事件期间显示/隐藏元素? 如何添加/删除CSS类?     

解决方法

您可能正在使用类似:
<% using(Ajax.BeginForm(\"UpdateForm\",new AjaxOptions{ OnBegin = \"showIt\",OnSuccess = \"hideIt\" })) { %>
    ...
<% } %>
OnBegin
OnSuccess
是在可见的Ajax请求阶段将调用的全局可见javascript函数的名称。这些功能应满足您的要求:
function showIt() {
    // show and add a class on the same element
    $(\"#SomeElementID\").show().addClass(\"some-class\");
}

function hideIt() {
    // hide and remove class on the same element
    $(\"#SomeElementID\").hide().removeClass(\"some-class\");
}
我不确定函数参数,因为: 我从未使用过此功能-我只使用
HtmlHelper
扩展方法并编写自定义jQuery脚本来执行Ajax请求和所有此类处理;从我的角度来看,不好的部分之一是那些全局函数,如果没有明确需要,通常可以更好地避免它们;我还怀疑Asp.net MVC Ajax应用程序很少使用这种方法,它们通常使用
HtmlHelper
扩展名并使用jQuery手动控制Ajax处理。 Microsoft文档非常稀缺,并且不讨论函数参数(或与此有关的调用上下文) 除了使用全局函数,您还可以内联编写匿名函数(这样做不好,因为所有内容都以字符串形式塞在一行中,但可以正常工作):
... OnBegin = \"function() { $(\\\"#SomeElementID\\\").show().addClass(\\\"some-class\\\"); }\" ...
所以告诉我是否可行。     ,隐藏东西:
$.ajax( //whatever
         success: function() { $(\'.classToShow\').show(); }
)
删除类别:
$.ajax( //whatever
         success: function() { $(\'#hideSomething\').removeClass(\'aClass\'); }   
         //addClass to add
)
OnBegin? 您是指发送前
$.ajax( //whatever
         beforeSend: function() { $(\'#hideSomething\').removeClass(\'aClass\'); }   
         //addClass to add
)
您确定引用的是jquery而不是msajax吗?