代码之家  ›  专栏  ›  技术社区  ›  GrahamB

HTML提交按钮与基于AJAX的文章(ASP.NET MVC)

  •  5
  • GrahamB  · 技术社区  · 16 年前

    我想要一些设计建议。

    我正在和一个同事开发一个应用程序。我来自Webforms世界,他对jQuery和AJAX做了很多工作。我们正在合作开发一个新的ASP.MVC1.0应用程序。

    他做了一些非常惊人的事情,我只是想弄清楚,并使用了一些第三方工具等数据网格等。

    但是。。。

    他很少使用提交按钮,而我大部分时间都使用。他使用一个按钮,但随后将Javascript附加到按钮上,以调用返回JSON对象的MVC操作。然后他解析对象以更新数据网格。我不确定他是如何处理服务器端验证的——我认为他向JSON对象添加了一个消息属性。一个示例场景是“保存”一条新记录,然后将其添加到gridview。

    用户看不到这样的回发,因此他使用jQuery在控制器操作运行时禁用UI。

    哦,看起来很酷。

    但是,我的方法是使用Submit按钮回发,让ModelBinder填充一个类型化的模型类,在我的controller Action方法中解析它,更新模型(并对模型应用任何验证),用新记录更新它,然后将它发送回视图进行呈现。与他不同的是,我不返回JSON对象,而是让视图(和datagrid)绑定到新的模型数据。

    这两种解决方案都“工作”,但我们显然是采取不同的路径应用程序,所以我们中的一个必须重新工作我们的代码。。。我们也不介意谁该做。

    不过,我更喜欢的是,我们采用“行业标准”的方式。我不确定我的WebForms背景是否影响了他的方式“感觉不对劲”,因为“submit”是指向服务器提交数据。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Alex Gyoshev    16 年前

    这两种解决方案都是可行的,不过使用提交按钮将使您的应用程序更易于访问(也就是说,使用它不需要JavaScript)。

    你也可以两者兼而有之——从一个包含所有必要逻辑的页面开始,使用postback,然后用漂亮的AJAX-y请求和动画“升级”它。通过这种方式,使用JavaScript的用户将获得赏心悦目的效果,页面将 当没有JavaScript的用户访问页面时,返回回发机制。

        2
  •  5
  •   Malevolence    16 年前

    您需要考虑的是,如果javascript不可用,应用程序将如何工作。您应该努力确保基本功能在没有它的情况下工作。这被称为渐进增强(progressiveenhancement)或不引人注目的javascript,被认为是一种最佳实践。

    http://en.wikipedia.org/wiki/Progressive_enhancement

    您应该使用一个带有真正提交按钮的表单,然后在用户代理支持的情况下劫持该表单以使用ajax。使用jqueryforms插件通常非常简单。在action方法中,可以通过检查request.IsAjaxRequest属性来检查传入请求是否是ajax请求。这是由MVC在X-Requested-With头设置为XMLHttpRequest的请求上自动设置的。然后您将返回一个完整的视图或者基于此返回一些json。

    下面是一个简短的视频演示: http://www.youtube.com/watch?v=YQsFR1rkgMU&feature=player_embedded

    推荐文章