【问题标题】:ASP.NET MVC modal dialog/popup best practiceASP.NET MVC 模式对话框/弹出窗口最佳实践
【发布时间】:2010-10-26 01:31:46
【问题描述】:

我正在寻找在 ASP.NET MVC 中实现模式对话框的最标准方法。

我正在尝试做的一个示例是,当我从“列表”页面中选择一个项目时,我希望“详细信息”页面成为列表上方的弹出窗口,而不是新页面。我不是在寻找黑客。我希望它是一个遵循 ASP.NET MVC 模式的解决方案。我也更希望不要跳出 jQuery 和 ASP.NET Ajax(没有插件,除非它正在成为一种最佳实践)。

【问题讨论】:

标签: jquery asp.net-mvc asp.net-ajax modal-dialog


【解决方案1】:

jQuery UI 库有一个对话框小部件,我用它来做类似的事情。虽然它是一个插件,IMO,但最好的做法就是不要滚动你自己的对话框小部件。

http://jqueryui.com/demos/dialog/

【讨论】:

    【解决方案2】:

    Lunchy 的对话建议很好。只需向您的控制器操作发出 ajax 请求并让该操作返回您想要显示的内容,例如带有一些格式化 html 的局部视图。然后,将该 html 放入您的对话框中,或者您打算显示的任何内容中,然后显示它。

    【讨论】:

    • 我想我明白你在说什么。动作方法的“返回”是什么样的?
    • 它看起来就像任何其他操作一样,您的视图只有一些 html 来格式化细节。然后使用 javascript/jQuery 在小窗口或
      或建议的对话框中显示呈现的 html。
    • 这是一个示例,展示了如何将外部内容加载到 jQuery 对话框中。 christopherchin.com/blog/index.cfm/2009/3/19/…
    • 你指的Lunchy的对话是什么?
    【解决方案3】:

    与 MVC 齐头并进的事情之一是 RESTful url。在这种情况下,处理此问题的“标准”方法是让详细信息使用它自己的 RESTful(和可收藏的)URL 拉出一个新页面,而不是在页面上显示一个对话框。您当然可以在列表的上下文中执行“详细信息预览”对话框,但如果您要与详细信息交互,我会考虑执行完整请求并在其自己的页面上获取详细信息。

    【讨论】:

    • 这不是我的客户通常想要的。他们希望能够在网格上的模式弹出窗口中编辑详细信息,而不是被重定向到另一个“编辑”页面。
    • @Merritt - 我想说这取决于界面中有多少东西。对话框,IMO,应该相当小,所以如果在对话框中可以管理细节的数量,它可能没问题。但是,它应该仍然可以通过完整的请求周期来支持可访问性。这是我用于小型表单的方向。
    • Accessiblity... 你会反对使用 AJAX 为模态表单进行回发吗?我想这真的会成为您的客户群是谁以及他们在寻找什么的问题。
    • @Merritt - 不,但我会使用渐进增强技术。设计它可以在没有 javascript 的情况下工作,然后在其上添加 javascript 功能以改进绝大多数用户的界面。我目前正在开发一些基于约定的框架扩展,这些扩展将允许您拥有完全可访问的基于 jQuery 选项卡的界面。
    • @Kirk 这个答案已经很老了,多年来很多事情都发生了变化,但我仍然认为最好的做法是有一个详细信息链接可以解析为完整页面以支持搜索/SEO/可访问性。然后是否使用该页面来填充弹出对话框取决于应用程序。我认为您是否使用对话框来查看/编辑详细信息取决于查看/编辑界面的复杂性。我不认为你有一个与普通页面相同大小/复杂性的对话框对用户有任何好处。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签