0

当所有相关数据都已经通过控制器签名中的参数可用时,使用视图模型有什么意义?我见过很多类似的例子:

public ActionResult Index(BasicPage currentPage)
    {
        var model = new BasicViewModel { Heading = currentPage.Heading, Body = currentPage.MainBody, MyBlock = currentPage.MyBlock };
        return View(model);
    }

为什么不直接将本示例中的“当前页面”发送到视图?这样做有没有被认为是不好的做法?

以上是 asp.net-mvc 的一般问题。我也会在这里添加一个关于 Episerver 的问题,如果我幸运的话,也有人可以回答这个问题。

在查看使用 MVC 完成的 Alloy 站点时,我还看到了与上面类似的行为,在所有控制器中都创建了视图模型,为什么不直接将发送到控制器的页面发送到视图?创建视图模型似乎是不必要的步骤?很可能我在这里遗漏了一些重要的点=)

4

2 回答 2

1

我同意您的代码示例不是一个好主意。但是拥有一个视图模型是一个很好的模式。您可能不需要立即使用它,但拥有可用的视图模型并准备就绪是即将添加的一个不错的选择。我会从他的 MVC 模板中使用 Joel 的概念:http ://world.episerver.com/Download/Items/EPiServer-CMS/EPiServer-7---CMS/EPiServer-7-MVC-Templates/

于 2013-02-08T13:35:11.160 回答
1

视图模型背后的想法是它们针对演示进行了优化。如果您使用域对象,您最终不得不将逻辑放入视图本身以控制事物的显示方式。将逻辑放入视图是糟糕的设计,因此视图模型为您提供了一些灵活性,以便您在更合适的位置管理此逻辑。

此外,您可以使您的视图模型更简单,只包括特定视图所需的字段。

于 2013-02-08T16:07:52.887 回答