Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc HTML提交按钮与基于AJAX的帖子(ASP.NET MVC)_Asp.net Mvc_Ajax_Design Patterns_Submit - Fatal编程技术网

Asp.net mvc HTML提交按钮与基于AJAX的帖子(ASP.NET MVC)

Asp.net mvc HTML提交按钮与基于AJAX的帖子(ASP.NET MVC),asp.net-mvc,ajax,design-patterns,submit,Asp.net Mvc,Ajax,Design Patterns,Submit,我想要一些设计建议 我正在和一位同事开发一个应用程序。我来自Webforms世界,他在jQuery和AJAX方面做了很多工作。我们正在合作开发一个新的ASP.MVC1.0应用程序 他做了一些非常令人惊奇的事情,我只是想了解一下,他使用了一些第三方工具,用于数据网格等 但是 他很少使用提交按钮,而我大部分时间都使用它们。他使用一个按钮,但随后将Javascript附加到按钮上,该按钮调用一个MVC操作,该操作返回一个JSON对象。然后他解析对象以更新数据网格。我不确定他是如何处理服务器端验证的——

我想要一些设计建议

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

他做了一些非常令人惊奇的事情,我只是想了解一下,他使用了一些第三方工具,用于数据网格等

但是

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

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

TBH,看起来很酷

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

这两种解决方案都“有效”,但我们显然将应用程序置于不同的路径,因此我们中的一人必须重新编写代码。。。我们也不介意谁该做

但我更喜欢的是,我们采用“行业标准”的方式来实现这一点。我不确定我的WebForms背景是否影响了他的方式“感觉不对劲”,因为“提交”意味着向服务器提交数据


请提供任何建议-非常感谢。

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

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


下面是一个简短的屏幕演示:

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


您也可以同时完成这两项工作——首先使用回发来创建一个具有所有必要逻辑的页面,然后使用漂亮的AJAX-y请求和动画对其进行“升级”。通过这种方式,使用JavaScript的用户将获得赏心悦目的效果,当没有JavaScript的用户访问页面时,页面将优雅地降级,返回回发机制。

+1。除了那种只能用JavaScript完成的复杂应用程序外,你应该先让它在没有JS的情况下工作,然后再在上面添加whizz-bang。谢谢。我也考虑过这一点,但该应用程序是为客户开发的内部应用程序。允许使用Javascript。