Javascript 使用Ajax助手与使用jQuery代码的常规html

Javascript 使用Ajax助手与使用jQuery代码的常规html,javascript,jquery,asp.net-mvc,razor,ajax.beginform,Javascript,Jquery,Asp.net Mvc,Razor,Ajax.beginform,我非常喜欢在asp.net mvc web应用程序中使用Ajax助手。我经常使用Ajax.BeginForm和Ajax.Actonlink。 但我最近发现了一种更标准、更易于维护的方式来管理我的表单和链接。 因此,与其写一些东西,比如:- @Ajax.ActionLink("Show Servers", "CustomerServer","Customer", new {customerID = Model.AccountDefinition.ORG_ID}, new AjaxO

我非常喜欢在asp.net mvc web应用程序中使用Ajax助手。我经常使用
Ajax.BeginForm
Ajax.Actonlink
。 但我最近发现了一种更标准、更易于维护的方式来管理我的表单和链接。 因此,与其写一些东西,比如:-

@Ajax.ActionLink("Show Servers", "CustomerServer","Customer",
    new {customerID = Model.AccountDefinition.ORG_ID},
    new AjaxOptions {
 InsertionMode = InsertionMode.Replace,
 UpdateTargetId = "detail"  ,
 LoadingElementId = "progress",

 OnSuccess="detailsuccess",



}
)
我可以定义一个常规的
,并定义其目标url,如下所示:-

<a data-modal='' href="@Url.Action("CustomerServer","Customer", new {customerID = Model.AccountDefinition.ORG_ID})"   title='GetListCustomer'>  Show Servers</a>
我发现第二种方法更标准,更易于维护。特别是因为我不必在每个
ajax.actionlink
上硬编码ajax设置<在每个ajax帮助器组件上,代码>插入模式,
UpdateTargetId
OnSuccess=“detailsuccess”


那么,有人能就使用这两种方法的利弊提出建议吗?

我或多或少地问了自己同样的问题。然后,我无意中看到了一段非常有趣的微软跳跃式启动视频

请参阅开发ASP.NET MVC视图一章。您将在第2课:使用HTML帮助程序中找到答案


正如他们在视频中解释的那样,ActionLink了解路由,它了解您的模型,并在您更改路由时自动生成正确的url。UrlAction不会,它只是创建您在代码中指定的url


顺便说一下,这是所有html助手的真正优势。它们是内置的,并且知道应用程序的运行情况。

这实际上取决于您想要实现什么。这里一点代码,那里一点代码。无论哪种方式,你都可以达到你想要的结果。很多时候,这取决于开发者的偏好。@adricadar很抱歉,我没有得到你的答案。。。我需要有ajax链接和ajax表单,以防用户禁用javaScript来执行常规调用。这两种方法将支持这一点。。。所以我想用这两种方法实现相同的结果,,你能在这方面做更多的工作吗?@ DEAN。DPUE,但是一般来说,与一个JavaScript中的所有控件相比,在每个Ajax助手组件上对Ajax设置进行硬编码可能会考虑更多的功率和更可维护性。这可能是因为你提供了一个答案而不是一个答案。@ GrimHOORN是的,你是正确的100%,html.actionlink和ajax.actionlink将根据路由系统生成url。。但在我的情况下,我的路线系统不会经常改变,或者根本不会改变,所以在这种情况下,这不是我的真正优势,但你是对的,我忘记了这一点。@johnG在这种情况下,我会说没有优势也没有劣势。所以你决定用什么。我建议你遵循接吻原则,保持小而简单。如果定制是这样做的,那么就这样做。@ GrimHooRn,那么哪种方法考虑了吻兼容,使用Ajax帮助器或者使用标准的HTML与定制的jQuery代码?这完全取决于您的应用程序。既然您是说带有自定义jQuery代码的标准html更易于维护,那么我假设它更简单;)看看您的应用程序,然后决定哪种方式对您的未来应用程序更重要,哪种方式对现在更好。
  $(document).on('click', 'a[data-modal]', function (e){
            $('#myModalContent').css({ "max-height": screen.height * .82, "overflow-y": "auto" }).load(this.href, function () {
                $('#myModal').modal({
                    //code goes here..
                    handle: ".modal-header"
                });
                $('#myModalContent').removeData("validator");
                $('#myModalContent').removeData("unobtrusiveValidation");
                $.validator.unobtrusive.parse('#myModalContent');
                bindForm(this);
              $("input[data-autocomplete-source]").each(function () {
                  var target = $(this);
                    target.autocomplete({
                        source: target.attr("data-autocomplete-source"), minLength: 1, delay: 1000, appendTo: $("#myModal")



                   });

                });
            });
            return false;
        });


    });



    });
    function bindForm(dialog) {
        $('form', dialog).submit(function () {
            $('.btn.btn-primary,.btn.btn-danger').prop("disabled", "disabled");
            $('#progress').show();
            if ($(this).valid()) {

                $.ajax({
                   //code goes here


                                });

                            });
                        }
                    }
                });
            }

        });
    }
});