gpt4 book ai didi

asp.net-mvc - 该模型在MVC中的作用是什么?

转载 作者:行者123 更新时间:2023-12-03 17:46:18 26 4
gpt4 key购买 nike

我读过一些有关MVC的文章,但是有一件事我不清楚。该模型在实际中的作用是什么。

该模型是否代表业务对象?
还是只是一个类,可以帮助将信息从 Controller 发送到 View ?

以两个业务类为例(从数据库填充数据)

Class Image
Property FileName As String
Property CreatedBy As User
End Class

Class User
Property UserName as String
End Class

是将“Image”作为模型,还是应该创建一个新类?

在模型中,是否应该创建一个UserName属性,该属性将从User对象中获取其数据?
Class ImageModel
Property FileName As String
Property CreatedBy As User

ReadOnly Property UserName As String
Get
Return User.UserName
End Get
End Property
End Class

最佳答案

对此有很多观点,但是以我的经验,Model有2个主要观点:
View 模型
这是一个POCO,仅包含显示View所需的所有数据。数据通常由Controller填充。
胖模型,瘦 Controller Model完成大部分业务工作。它包含并填充View所需的所有数据,并且Controller用于保存数据,等等。
MVC之美
MVC的优点在于它是开放的!您可以选择所需的任何类型的模型...您可以将所有数据放入ViewStateModel,包含一堆ViewModelModel中,无论如何。完全取决于您。 “模型”,“ View ”和“ Controller ”是可以根据需要使用的空白 Canvas 。
我用什么
我的团队做了很多MVC工作,我们尝试了许多这些不同的方法。最终,我们确定我们最喜欢的是 Fat模型,Skinny Controller 范例。
我认为这种模式最适合“保持简单”和“不要重复自己”,并且绝对可以保持“关注点分离”。
这是我们的代码的组织方式:

  • Controller
  • 处理与HTTP请求有关的所有内容-重定向,身份验证,网络安全,编码等。
  • 将所有“输入”提供给Model,并将Model提供给 View 。不访问业务或数据层。

  • View
  • 处理所有HTML和JSON生成
  • 仅访问强类型Model的数据

  • 模型
  • 负责进行所有更新,调用业务和数据层,加载所有数据
  • 处理所有验证和错误,并将其返回给 Controller
  • 包含View所需的所有数据的属性,并自行填充


  • 即使这听起来像是MVC的通用原理,但很快就很明显MVC不需要这些原理,这就是为什么许多项目使用其他原理的原因。
    例子
    这是一个示例 Model。 Controller创建它,将其填充,然后Controller将其传递给View。
    public class UsersModel
    {
    protected UserBusiness userBusiness = new UserBusiness();

    public UsersModel(string editUserName)
    {
    // Load all users:
    this.Users = userBusiness.GetAllUsers();

    // Load the user to be edited:
    this.EditUser = (editUserName == null) ? null : userBusiness.GetUser(editUserName);
    }

    public List<User> Users { get; private set;}
    public User EditUser { get; private set; }
    }
    在这种情况下,所有的“用户业务逻辑”都在一个不同的项目(我们的“业务层”)中,因为我们有一个大型系统。但是较小的项目不需要这样做……模型可以包含业务逻辑,甚至可以包含数据访问代码。

    关于asp.net-mvc - 该模型在MVC中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406822/

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