从Microsoft Ajax.BeginForm迁移到jquery

leo*_*ora 6 asp.net-mvc jquery

我已经慢慢地从microssoft ajax转移到jquery所有我的ajax东西.我唯一留下的是一些使用Ajax.Beingform使用microsoft ajax发布的表单.这是一个asp.net mvc网站,所以提交应该调用控制器post post.

将此转换为jquery的最简单方法是什么,因此我可以删除对microsoft ajax的引用.

Joh*_*ter 7

如果你有一个看起来像这样的表单,最简单的方法是使用jQuery Form插件来实现大部分功能:

<%= Ajax.Form(new AjaxOptions {
         Url = theUrl,
         Method = theMethod,
         Confirm = confirmFunction, 
         InsertionMode = InsertionMode.Before,
         OnBegin = onBegin,
         OnComplete = onComplete,
         OnFailure = onFailure,
         OnSuccess = onSuccess,
         UpdateTargetId = elementId,
         LoadingElementId = loadingElementId
         });
Run Code Online (Sandbox Code Playgroud)

这将对应于以下形式的插件调用: -

$("#yourFormId").ajaxForm({
    url : theUrl,
    type : theMethod,
    beforeSubmit : confirmFunction,
    beforeSend : onBegin,
    complete : onComplete,
    success : onSuccess,
    error : onFailure
});
Run Code Online (Sandbox Code Playgroud)

唯一的问题是复制LoadingElementId,UpdateTargetId和InsertionMode属性.

如果要复制InsertionMode.Replace,可以将其他目标选项传递给ajaxForm插件.如果要复制剩余的功能,则必须编写自己的beforeSend,success和complete事件处理程序.

类似下面的内容将使用InsertionMode.Before模拟表单,UpdateTargetId ="Test",LoadingElementId ="Loader": -

$("#yourFormId").ajaxForm({
     beforeSend : function() { $("#Loader").show(); },
     complete : function() { $("#Loader").hide(); },
     success: function(result) { $(result).prependTo("#Test"); }
});
Run Code Online (Sandbox Code Playgroud)