Gra*_*amB 5 ajax asp.net-mvc design-patterns submit
我正在接受一些设计建议.
我正在和一位开发人员一起开发一个应用程序.我来自Webforms世界,他在jQuery和AJAX方面做了很多.我们正在合作开发一个新的ASP.MVC 1.0应用程序.
他做了一些相当神奇的事情,我只是把我的头脑,并使用一些第三方工具等数据网格等.
但...
他很少使用提交按钮,而我大部分时间都使用它们.他使用一个按钮,然后将Javascript附加到它,调用一个返回JSON对象的MVC动作.然后他解析对象以更新datagrid.我不确定他是如何处理服务器端验证的 - 我认为他在JSON对象中添加了一个消息属性.一个示例场景是"保存"一条新记录,然后将其添加到gridview中.
用户没有看到这样的回发,因此他在控制器操作运行时使用jQuery来禁用UI.
TBH,它看起来很酷.
但是,我这样做的方法是使用Submit按钮进行回发,让ModelBinder填充一个类型化的模型类,在我的控制器Action方法中解析,更新模型(并对模型应用任何验证),更新它与新记录,然后发送回由View呈现.与他不同,我不返回JSON对象,我让View(和datagrid)绑定到新的模型数据.
这两种解决方案都"有效"但我们显然将应用程序放在不同的路径上,因此我们中的一个人必须重新编写代码......我们不介意必须完成哪些工作.
我更喜欢的是,我们采用"行业标准"的方式来做到这一点.我不确定我的WebForms背景是否会影响他的方式"感觉不对",因为"提交"意味着将数据提交给服务器.
有任何建议请 - 非常感谢.
您需要考虑的是如果javascript不可用,应用程序将如何工作.您应该努力确保基本功能在没有它的情况下工作.这称为渐进增强或不引人注目的javascript,被认为是最佳实践.
http://en.wikipedia.org/wiki/Progressive_enhancement
你应该这样做的方法是使用一个带有真实提交按钮的表单,然后在用户代理支持的情况下劫持该表单以使用ajax.使用jquery表单插件通常很简单.在您的操作方法中,您可以通过检查Request.IsAjaxRequest属性来检查传入请求是否是ajax请求.这是由MVC自动设置的,其中X-Requested-With标头设置为XMLHttpRequest.然后你会返回一个完整的视图或基于它的一些json.
这是一个简短的截屏视频,展示了这一点:http://www.youtube.com/watch?v = YQsFR1rkgMU&feature = player_embedded
这两种解决方案都是可行的,尽管使用提交按钮将使您的应用程序更易于访问(即不需要 JavaScript 即可使用它)。
您也可以同时执行这两种操作 - 从一个具有使用回发的所有必要逻辑的页面开始,然后使用漂亮的 AJAX-y 请求和动画“升级”它。这样,使用 JavaScript 的用户将获得视觉享受,并且当没有 JavaScript 的用户访问页面时,页面将优雅地降级,回退到回发机制。
| 归档时间: |
|
| 查看次数: |
3448 次 |
| 最近记录: |