代码之家  ›  专栏  ›  技术社区  ›  James

ASP.NET MVC-什么替换事件以支持松耦合?

  •  2
  • James  · 技术社区  · 16 年前

    ASP.NET MVC的哪些功能可以替代WebForms中事件支持松散耦合组件的方式?

    例如,在WebForms中使用一个简单的页导航控件:

    1. 单击页码
    2. 寻呼机用新的页码触发“pagechange”事件
    3. 此订阅页/控件接收到事件并处理启动获取和绑定新数据的调用。

    在ASP.NET MVC中有哪些工具可以提供类似的支持

    • 松耦合
    • 组件可重用性
    • 单个页面/视图(如此复杂的“门户”类型页面)的逻辑分离。
    2 回复  |  直到 13 年前
        1
  •  0
  •   jwsample    15 年前

    MVC不处理事件,因为事件在很大程度上只是客户机试图告诉服务器做什么和服务器实际做什么之间的一个不必要的层。

    在webforms的分页示例中,客户机单击按钮,浏览器发送事件/视图状态,引擎触发buttonchecked事件。您检查事件,确定客户机要分页,然后执行分页逻辑。

    在MVC范式中,用户单击一个按钮,直接向执行分页逻辑的代码发出请求。既然你知道当你把按钮放在那里的时候,按钮应该调用什么动作,为什么要经历事件触发的所有阴谋?在您的控制器中,当您得到命令时,您当然可以触发事件,但我真的无法想象这样做的用例。

    这两种方法都完成了相同的事情,但MVC只是消除了一层复杂性。

        2
  •  1
  •   Dave Swersky    16 年前

    通常,ASP.NET MVC和模型视图控制器通过将支持应用程序的数据和代码与用户看到的可视“表示层”标记分开来支持松散耦合和关注点分离。

    如果设计得当,MVC中的控制器和视图可以重用,这样实体的编辑视图就可以“嵌入”到相关视图中,而不需要修改。

    例如:ORDERS视图可能包括ORDERSDETAIL局部视图。该部分视图可以替换为在应用程序中的其他位置也可用的OrderDetail编辑视图。

    将模型与视图分离,通过将代码与表示层的上下文分离,可以使单元测试更有效、更简单。您不需要引用从数据库中提取数据的System.Web-to-Unit测试代码。

    推荐文章