ASP.NET MVC:不在数据库中的模型

时间:2014-02-03 22:00:53

标签: asp.net-mvc models

我使用Entity Framework,所以我的几乎所有模型实际上都是数据库。但是,有时我想向视图传递一个更简单的对象,这个对象不一定是具有所有属性的数据库模型。

例如,我有这个模型:

int ID
string name
string email
string country
string username
string password

当我将模型传递给登录视图时,我只需要用户名和密码。因此,我考虑使用用户名和密码创建简化模型。

我的问题:

1)标准化这个的最佳方法是什么?任何最佳做法? 2)我可以使用继承来避免重复用户名/密码等属性吗? 3)我把这个非数据库模型放在哪个cs文件中? 4)这个简化模型的名称怎么样?

谢谢!

1 个答案:

答案 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非常有用,因为在很多情况下,视图通常不会与模型一对一地映射,或者可能需要您不希望直接添加到模型中的注释。

有很多很棒的用途。