asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net – 在jQuery对话框中的窗体中,MVC中通常采用的方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
将jQuery对话框与ASP.NET MVC集成似乎有几种方法。具体做法是否成为普遍接受的最佳做法呢?

作为示例:我有一个列表页面,其中点击任何列出的项目的“编辑”在jQuery对话框中打开一个表单,填充项目的详细信息。用户编辑详细信息并点击“保存”。如果保存在服务器端成功,则关闭对话框,并使用新数据重新构建列表。如果服务器端的保存失败,对话框将保持打开状态,并向用户显示错误消息

> No-JSON方法:每个“编辑”链接是一个“编辑”控制器动作的HREF。该控制器操作构建与“列表”视图相同的视图,此外还包括构建编辑表单的部分操作,填充它,并定义javascript以将其打开为jquery对话框。 “保存”是一个表单;如果成功,它会将重定向操作返回到列表页面。如果失败,它会重建整个页面(包括在对话框中弹出的表单),同时显示错误消息。@H_197_5@>全JSON方法:列表页面呈现一个空的编辑表单(隐藏),准备弹出一个对话框。 “编辑”链接调用本地javascript,它执行一个ajax请求来获取完整的对象(我定义一个控制器,返回完整的对象作为JsonResult)。成功后,它将使用对象的数据填充编辑表单并打开对话框。 “保存”链接调用本地javascript,将表单数据绑定到一个json对象中,并使用该json对象调用一个后期操作作为有效负载(我定义一个控制器,期望该对象尝试保存,并返回一个JsonResult,表示成功/失败errormessages)。来自ajax请求的成功回调将评估返回的对象,并显示静态打开的jquery对话框中的错误消息,或关闭对话框并重新加载“列表”页面以获取列表中的新数据。@H_197_5@> [编辑] Ajax-HTML方法:刚刚看到了this SO discussion这描述了另一种方法。 “编辑”调用本地javascript,它做一个ajax的帖子来获取对话框的全部HTML(我会写一个控制器,返回部分视图:完全填充的表单)。它将返回的HTML呈现到一个jquery对话框中,并且“重新连接”表单提交以执行表单内容的ajax-post(我将编写一个httpPost控制器,与上述#2相同)。成功回调评估响应并填充错误消息或关闭对话框。@H_197_5@还有一些还没有想到的很酷的方法?

选项1似乎更符合“纯”ASP.NET MVC。然而,它似乎具有大的http有效载荷(因为我们在每个请求上都将完整的页面发送回浏览器),而且服务器端性能较差(因为我们正在重新构建每个请求的列表)。

选项2似乎更符合更现代的基于Ajax的Web应用程序(较小的http有效载荷,更细粒度的操作)。然而,好像很多控制器都将是JSON控制器,而且我将会编写很多客户端代码来将数据从JSON对象传送到表单域,显示错误消息等。它也似乎是很遗憾,很多很酷的MVC功能,如EditorFor()和ValidationmessageFor()。它只是“感觉”像我正在围绕MVC系统工作,而不是使用它。

[编辑:添加选项3]选项3似乎是1和2之间的混合。我使用“纯”MVC方法来构建和填充表单,并返回一个完全形成的HTML FORM标记。将HTML返回到ajax请求感觉很奇怪因为它是如此冗长,但我可以解决它。后期操作很好,紧凑的JSON比“ajax”更“感觉”。然而,不幸的是,有效载荷对象是一个FormCollection而不是一个真正的viewmodel对象。似乎我可以利用一些MVC的便利(EditorFor()),而不是其他(ValidationmessageFor())。

我正在寻找“正确”的方式来做到这一点,而不仅仅是最快的方法来一起攻击。是的,是的,我知道没有普遍的“正确”的方式。但我确定有一些明显错误的方法来做,我想避免它们。

我在ASP.NET / C#中很有经验,但我对MVC很新。在此先感谢您的帮助!

[编辑] – 杰出的回应 – 我希望能够奖励多个答案/赏金,因为我发现几个答案非常有用。但是,由于我不能,我正在标榜最高评价的答复作为答案。再次感谢所有受访者!

解决方法

我的团队和我有很多经验写AJAX启用的MVC应用程序,我们已经使用了所有3种方法。

然而,我最喜欢的是AJAX-HTML方法 – 使用PartialView来呈现对话框的内容,这可能包括服务器端验证消息和任何其他逻辑。

这种方法的最大好处是分离问题 – 您的视图始终负责呈现HTML,JavaScript不必包含渲染JSON所需的任何文本,标记或“模板”。

另一大优点是,所有伟大的MVC功能都可用于渲染HTML:强类型视图,HtmlHelper,DisplayFor和EditorFor模板,DataAnnotations等。这使得更容易保持一致,并且很好地重构。

请记住,没有必要坚持单一的方法。当你的AJAX调用只需要一些简单的事情,例如像“success”这样的状态更新,只需使用一个字符串或者JSON来传达这些消息就可以了。在需要HTML时使用PartialView,并且在需要通信时使用更简单的方法。

大佬总结

以上是大佬教程为你收集整理的asp.net – 在jQuery对话框中的窗体中,MVC中通常采用的方法全部内容,希望文章能够帮你解决asp.net – 在jQuery对话框中的窗体中,MVC中通常采用的方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。