2014-02-03 2 views
0

Я использую Entity Framework, поэтому почти все мои модели на самом деле являются базой данных. Однако иногда я хочу перейти к представлению более простого объекта, который не является необходимым для модели базы данных со всеми свойствами.ASP.NET MVC: моделей нет в базе данных

К примеру, у меня есть эта модель:

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

Когда я прохожу модель в целях авторизации, мне нужно только имя пользователя и пароль. Таким образом, я думал о создании упрощенной модели только с именем пользователя и паролем.

Мои вопросы:

1) Какой самый лучший способ стандартизировать это? Любая лучшая практика? 2) Могу ли я использовать наследование, чтобы избежать повторения таких свойств, как имя пользователя/пароль? 3) Где я положил эту модель без базы данных ... в файл cs? 4) А как насчет названия этой упрощенной модели?

Спасибо!

+0

ViewModels - это путь. Он должен содержать только свойства, связанные с представлением. Найдите его в google, и я уверен, что вы найдете массу статей. – Sunny

ответ

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 из вашего запроса к базе данных (или любой другой источник).

ViewModels очень полезны, так как во многих случаях представления обычно не сопоставляются друг с другом с моделями или могут потребоваться аннотации, которые вы не хотите добавлять к вашим моделям напрямую.

Так много отличного использования.

+0

Хорошо, если я использую viewmodels ... теперь, как связать модель и viewmodel? Где я помещаю данные? Существует ли какой-либо официальный способ или передовая практика? – simonauger

+0

@ user3214662 аннотации данных должны быть в свойствах модели просмотра, для которых вы требуете их. Я изменю свой ответ, чтобы включить некоторые. и вам не нужно связывать модель представления и модель, вы можете получить значения из режима просмотра вручную или использовать инструмент, например automapper, чтобы получить их без необходимости использовать все свойства вручную. – scartag

+0

«вы можете получить значения из режима просмотра вручную», вы имеете в виду выборку всех значений из модели в databasecontext и вручную создать модель просмотра после? И не то, что мне нужна эта функция, но если я использую viewmodel вместо модели напрямую, функция фреймворка рамки объекта теперь бесполезна, нет? – simonauger

Смежные вопросы