【问题标题】:MVC - How can I hook to a controller action in order to change the view before it is being returned to the browser?MVC - 如何挂钩到控制器操作以在视图返回到浏览器之前更改视图?
【发布时间】:2011-06-17 19:42:47
【问题描述】:

我对 MVC 有点陌生,如果我在这里问一些奇怪的问题,我深表歉意。 基本上我正在尝试以可插入的方式修改现有的电子商务 MVC 应用程序,这意味着我不想触及现有代码,而是引用应用程序的相关程序集并使用应用程序中的所有扩展点。

有一个CategoryView 显示给定类别中的所有产品。我想以某种方式连接到控制器或模型或视图中,以便为 CategoryView 更改模型中的一些数据。

我能想到的唯一方法是更改​​视图的路由并编写我自己的控制器和动作。在我的操作中,我可以调用原始控制器和操作来获取ViewResult 并在将其返回给ViewEngine 之前对其进行操作。 从表面上看,这对我来说似乎是错误的,而且我不确定是否可以从我的控制器的动作中调用另一个控制器的动作。

所以我想知道从 MVC 的角度来看,是否有办法连接到 CategoryView 控制器、模型或操作,以更改视图中显示的数据?我是从 MVC 的角度说的,因为否则应用程序中没有预定义的自定义扩展点可以做到这一点。

请指教。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    您可以通过 ActionFilter 或在您的控制器中调用 RenderView() 然后修改结果。

    见:Using Action Filter with view

    【讨论】:

      【解决方案2】:

      看看ActionFilterAttribute。这允许您在调用动作之前或之后以及在执行该动作返回的 ActionResult 之前和之后挂钩执行代码。

      这个类的每个方法都接收一个上下文对象。上下文对象有一个您可以操作的 Result 属性。

      【讨论】:

        猜你喜欢
        • 2012-11-07
        • 2019-09-26
        • 2016-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多