使用asp.net mvc,我们可以将什么放入AjaxOptions OnSuccess等?

时间:2011-04-14 19:29:40

标签: c# asp.net asp.net-mvc

我似乎无法使用jquery引用DOM中的项目。

如何在OnBegin / OnSuccess事件期间显示/隐藏元素?

如何添加/删除css类?

2 个答案:

答案 0 :(得分:2)

你可能会使用类似的东西:

<% using(Ajax.BeginForm("UpdateForm", new AjaxOptions{ OnBegin = "showIt", OnSuccess = "hideIt" })) { %>
    ...
<% } %>

OnBeginOnSuccess是全局可见的javascript函数的名称,这些函数将在受尊重的Ajax请求阶段调用。这些功能应该满足您的要求:

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");
}

我不确定函数参数,因为:

  1. 我从未使用过这个功能 - 我只使用HtmlHelper扩展方法并编写执行Ajax请求和所有处理的自定义jQuery脚本;从我的观点来看,其中一个不好的部分是那些全球功能,如果没有明确需要,通常可以更好地避免;我还怀疑少数少数人以这种方式使用Asp.net MVC Ajax应用程序,他们通常使用HtmlHelper扩展并使用jQuery手动控制Ajax处理。
  2. Microsoft文档非常缺乏,并且没有讨论函数参数(或调用上下文)
  3. 不是使用全局函数,你可以编写内联的匿名函数(这不好,因为所有内容都作为一个字符串填入单行但可能有效):

    ... OnBegin = "function() { $(\"#SomeElementID\").show().addClass(\"some-class\"); }" ...
    

    告诉我它是否有效。

答案 1 :(得分:0)

隐藏某物:

$.ajax( //whatever
         success: function() { $('.classToShow').show(); }
)

删除课程:

$.ajax( //whatever
         success: function() { $('#hideSomething').removeClass('aClass'); }   
         //addClass to add
)

OnBegin?

你的意思是beforeSend

$.ajax( //whatever
         beforeSend: function() { $('#hideSomething').removeClass('aClass'); }   
         //addClass to add
)

您确定引用了jquery而不是msajax吗?