将模型的检查函数放在哪里(asp.net mvc5)

本文关键字:asp net mvc5 在哪里 模型 检查 函数 | 更新日期: 2023-09-27 18:26:55

我知道模型不应该有任何逻辑,但我不知道在哪里可以放置特定模型的检查或更新功能

前任。

public class GuestBook
    {
        public int money { get; set; }
        [Required]
        public string name { get; set; }
        [Required]
        public string email { get; set; }
        public DateTime content { get; set; }
        public bool rich()
        {
            if (this.money <3000)
                return false;
            else
            return true;
        }
        public void earn(GuestBook b)
        {
            this.money += b.money;
        }
    }

函数rich()和earn()仅用于此模块(GuestBook)如果我没有把它放在这个模块里,那么我应该放在哪里?

将模型的检查函数放在哪里(asp.net mvc5)

遵循良好的OOP设计原则,真正保护类的不变量(而不是维护性噩梦)的唯一方法是不允许类以外的任何人更改它们。通常,这是通过不公开公共setter方法(公共auto属性是邪恶的),使字段成为readonly(尽可能),并从构造函数初始化它们来完成的。

拥有类的全部意义在于用行为对数据进行分组。包含int和字符串的简单数据结构不是OOP意义上的类,它只是一个结构。

在某些情况下,你会陷入一种更邪恶的ORM,它迫使你公开所有财产。不过,这不是实体框架(以及其他一些框架)的问题,EF可以在需要时神奇地反映和访问私有setter,你只需要确保还有一个私有默认构造函数。

根据您的类rich方法正在验证,earn方式正在应用业务逻辑。您可以为可以在ModelState.IsValid上激发的富方法逻辑创建AdditionalMetadataAttribute,对于earn方法,您需要创建应用所有业务逻辑的BO类。这里是AdditionalMetadataAttribute 的链接