将模型的检查函数放在哪里(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)如果我没有把它放在这个模块里,那么我应该放在哪里?
遵循良好的OOP设计原则,真正保护类的不变量(而不是维护性噩梦)的唯一方法是不允许类以外的任何人更改它们。通常,这是通过不公开公共setter方法(公共auto属性是邪恶的),使字段成为readonly
(尽可能),并从构造函数初始化它们来完成的。
拥有类的全部意义在于用行为对数据进行分组。包含int和字符串的简单数据结构不是OOP意义上的类,它只是一个结构。
在某些情况下,你会陷入一种更邪恶的ORM,它迫使你公开所有财产。不过,这不是实体框架(以及其他一些框架)的问题,EF可以在需要时神奇地反映和访问私有setter,你只需要确保还有一个私有默认构造函数。
根据您的类rich方法正在验证,earn方式正在应用业务逻辑。您可以为可以在ModelState.IsValid上激发的富方法逻辑创建AdditionalMetadataAttribute,对于earn方法,您需要创建应用所有业务逻辑的BO类。这里是AdditionalMetadataAttribute 的链接