2

目前我正在调查 MVC 是否是我们 Web 应用程序新主要版本的方法。我们有一个现有的带有 webpart 的 web 应用程序,根据一些用户设置动态呈现。每个 webpart 都有自己的数据和逻辑(例如,一个带有用户信息的 webpart、一个带有当前登录用户的 webpart、一个带有约会等的 webpart)。

我们需要完成的(我认为)是渲染一个包含多个局部视图的视图。每个局部视图代表一个不同的模型,并有自己的逻辑。

我想出了如何将多个部分视图放在一个视图中,但我不知道如何处理每个视图的业务逻辑(在“部分控制器”中?如果可能的话?),并处理每个视图的模型?

所以主要目的是渲染一个页面有多个动态视图(根据用户的配置),每个都有自己的逻辑和数据。然后,例如,当在局部视图中单击按钮时,会调用相应的控制器来处理该事件,并返回更新后的局部视图。部分视图需要松散耦合,并异步更新。

到目前为止,我所看到的大多数教程和文档通常都集中在 MVC 上,而不是关于如何为每个部分视图分离业务逻辑和模型。

所以我不是在问如何做到这一点,而是:

  • 是否可以使用 MVC 4 或 5 轻松完成此任务?

  • 有没有人知道一个很好的现实生活中的例子或教程?

我希望任何人都可以指出我正确的方向或对此分享一些想法......

4

1 回答 1

1

您可以为每个 web 部件创建一个或多个控制器,其中包含一个操作。

将所有相关的 Web 部件分组在同一个控制器中,但为每个 Web 部件创建一个操作和 View+ViewModel。然后使用 Html.RenderAction 方法在您的页面/主视图上调用这些操作(并放置您的 web 部件)。

免责声明:也就是说,对 Html.RenderAction 的每次调用都会创建一个完整的 mvc 流,实例化一个控制器、模型和视图,最后渲染整个事物并将值传递给您的页面/主视图。拥有大量 Html.RenderAction 可能会大大降低您的页面创建速度。您可以像 Unity 一样查看 DI/IoC 并考虑重用控制器,或者只查看 System.Web.Mvc.DependencyResolver 来自己处理控制器的创建。

于 2014-01-07T14:21:26.670 回答