mik*_*nne 18 asp.net ajax asp.net-mvc asp.net-mvc-3
似乎有几种方法可以将jQuery对话框与ASP.NET MVC集成.是否有一种特定的方法成为普遍接受的最佳实践方法?
作为一个例子:我有一个列表页面,点击任何列出的项目的"编辑"在jQuery对话框中打开一个表单,填充项目的详细信息.用户编辑详细信息并单击"保存".如果保存在服务器端成功,则关闭对话框并使用新数据重新构建列表.如果在服务器端保存失败,则对话框保持打开状态并向用户显示错误消息.
选项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很新.在此先感谢您的帮助!
[编辑] - 杰出的回答 - 我希望我可以奖励多个答案/赏金,因为我发现几个回复非常有用.但是,由于我不能,我将最高投票的答案标记为答案.再次感谢所有受访者!
Sco*_*pey 12
我和我的团队在编写支持AJAX的MVC应用程序方面有很多经验,我们使用了所有3种方法.
但是,我最喜欢的是AJAX-HTML方法 - 使用a PartialView来呈现对话框的内容,其中可能包括服务器端验证消息和任何其他逻辑.
这种方法的最大好处是关注点的分离 - 您的视图始终负责呈现HTML,并且您的JavaScript不必包含呈现JSON所需的任何文本,标记或"模板".
另一大优势是所有伟大的MVC功能可用于渲染HTML:强类型的意见,HtmlHelper,DisplayFor和EditorFor模板DataAnnotations等,这使得它更容易保持一致,并赋予很好地重构.
请记住,没有必要坚持单一的方法.当你的AJAX调用只需要一些简单的东西,比如像"成功"这样的状态更新时,只需使用string或JSON传达这些消息即可.PartialViews在需要HTML时使用,并在需要通信时使用更简单的方法.
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |