我使用Entity Framework,所以我的几乎所有模型实际上都是数据库。但是,有时我想向视图传递一个更简单的对象,这个对象不一定是具有所有属性的数据库模型。
例如,我有这个模型:
int ID
string name
string email
string country
string username
string password
当我将模型传递给登录视图时,我只需要用户名和密码。因此,我考虑使用用户名和密码创建简化模型。
我的问题:
1)标准化这个的最佳方法是什么?任何最佳做法? 2)我可以使用继承来避免重复用户名/密码等属性吗? 3)我把这个非数据库模型放在哪个cs文件中? 4)这个简化模型的名称怎么样?
谢谢!
答案 0 :(得分:3)
是的,你可以使用ViewModels。
这些是包含视图所需属性的常规类。这些属性可以是模型的子集,也可以是多个模型的组合。
对于登录视图,您可以创建LoginViewModel
public class LoginViewModel
{
public int UserId {get; set;}
[Required]
public string Username {get; set;} //included required attribute for username
public string Password {get; set;}
}
您现在可以从数据库查询(或任何其他来源)投影您的viewmodel。
ViewModel非常有用,因为在很多情况下,视图通常不会与模型一对一地映射,或者可能需要您不希望直接添加到模型中的注释。
有很多很棒的用途。