gpt4 book ai didi

asp.net-mvc - 模型本身是否应该进行一些计算?

转载 作者:行者123 更新时间:2023-12-04 22:53:29 24 4
gpt4 key购买 nike

我一直在学习ASP.NET MVC几个月。我已经了解了 View 和 Controller 以及模型和东西。为了设计一个 View ,我们总是需要一个模型。
通常模型只是一个类,我们用数据填充并传递给 View 。我在这里有一个问题:模型本身应该进行一些计算,还是应该只是愚蠢的?

例如,我有一个加载 Book 的网站。由 User 提供s。我的模型类如下:

public class FormViewModel
{
public User MyUser {get; set;}
public Books UserBooks {get; set;}

//Constructor here.
public FormViewModel(User _user, Books _userBooks)
{
this.MyUser=_user;
this.UserBooks=_userBooks;
}
}

这个类不做任何事情——它只是一个模板。现在如果我修改代码如下:
public class FormViewModel
{
public User MyUser {get; set;}
public Books UserBooks {get; set;}

//Constructor here.
public FormViewModel(User _user)
{
this.MyUser=_user;
this.UserBooks=_user.GetBooks();
}
}

其中 Book s 的收集取决于 User已被选中。现在它更容易使用。

我只想知道根据 MVC 模式和实践有什么好的方法。

最佳答案

您希望将所有业务逻辑和数据验证分离到模型中。通常这包括“分组”数据集等或按某些标准过滤数据。

您希望在 Controller 中分离对模型的这些方法的所有调用, Controller 的职责是从模型中检索和发送数据。然后 Controller 将适用的数据集传递到 View 中。

Helpers 是 View 用于执行表示逻辑(不是业务逻辑或验证)的逻辑,例如打印菜单等。

View 是您将使用 Helpers 的地方(或者不,它们不需要正确使用 MVC,但它们会“帮助”:p)将 HTML、CSS 和 JS 写入浏览器。您还可以将常用的 View 模块分成部分 View ,您可以将它们包含在多个 View 中。

您可以进一步将事物分离到 ViewModel 中,但随后您将超出“严格”的 MVC。在这种情况下,您将使用 ViewModel 来帮助 View 与模型交互 - 基本上 ViewModel 是一个模块化 Controller 。在这种情况下, Controller 会做的比它已经做的少得多。

但是,这对于 Web 应用程序来说通常是多余的。因为 Web 应用程序只有一个执行流程(请求),所以没有必要将事物分离到 ViewModel 中。然而,在 GUI 代码中,ViewModel 变得更加有用(因为 GUI 不仅仅是单一的执行流程)。

您总是希望将业务逻辑分离到模型中。请记住,您不应该将 Controller 耦合到您的模型 - 这样您就可以在其他 Controller 的其他地方使用您的模型,甚至将其公开为 Web 服务。

希望这可以帮助
:)

关于asp.net-mvc - 模型本身是否应该进行一些计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1022546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com