【问题标题】:How to develop "shippable" components for ASP.NET MVC?如何为 ASP.NET MVC 开发“可交付”组件?
【发布时间】:2008-10-31 20:08:46
【问题描述】:

在 ASP.NET 网络表单中,我们有服务器组件,可以将其封装到外部程序集中并作为产品交付。在 ASP.NET MVC 中我们没有服务器组件,那么外部组件的最佳选择是什么?

环顾四周,似乎唯一可能的选择是创建一个 Html 帮助器 方法,该方法返回一堆操纵事物的 html + js。如果组件需要一些逻辑,添加一些新路由的 http 模块和在同一个外部程序集中定义的控制器来处理 ajax 调用。

否则 RenderPartial 只返回一个视图...但视图是一个真实文件,因此很难封装在外部程序集中,除非它被添加为资源文件,然后使用看起来像的路径提供程序检索放入资源文件而不是磁盘上的真实位置。

或者还有其他我没有考虑的选择吗?

谢谢 西莫

【问题讨论】:

  • 这方面有进展吗?在 MVC 页面上嵌入复杂的功能(包括历史感知交互)而不涉及页面的其余部分是一个合理且普遍的愿望。我看到的唯一替代方法是要求使用页面跟踪每个组件的查询字符串状态,这太可怕了。
  • @Jason:使用 ajax 和查询字符串更新页面的某些部分有什么可怕的?

标签: asp.net-mvc components


【解决方案1】:

由于服务器端逻辑与客户端逻辑完全分离,因此为 Asp.Net MVC 同时制作服务器端和客户端组件并不是很有用。您可以更好地制作纯 Html/Javascript 组件,并且可以在多个平台上使用(Ruby on rails、php、python、java)以及如何在多个平台上集成它们的教程。 您开发的平台不是 asp.net mvc,而是一般的网络浏览器! 一个很好的灵感来源是Ext JS Framework

【讨论】:

    【解决方案2】:

    没有什么能阻止您开发自定义控件(例如,对于花哨的网格)、将其封装在程序集中并发布它

    但这仅适用于第一次渲染:如果我想让网格可排序/可分页/可编辑等等怎么办?

    【讨论】:

      【解决方案3】:

      ASP.NET MVC 完全支持除 Html 帮助程序之外的自定义控件和用户控件。没有什么能阻止您开发自定义控件(例如,对于花哨的网格)、将其封装在程序集中并发送它。我错过了问题的重点吗?

      【讨论】:

      • 是的,我认为您有点忽略了问题的重点。许多 ASP.NET 自定义控件(包括来自 Microsoft 的一些控件)完全或部分依赖于客户端 ViewState 和回发,这在 ASP.NET MVC 中都不可用。既不使用的 ASP.NET 控件在 MVC 中也能正常工作。
      【解决方案4】:

      如果你想做排序和分页,一种方法是通过 AJAX。 Telerik has a demo of this with their grid.

      【讨论】:

        【解决方案5】:

        试试 MVCContrib 的 PortableArea。这似乎是您正在寻找的东西。即使不是,源代码也可以帮助您实现目标。

        演示视频:http://www.viddler.com/explore/c4mvc/videos/11/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多