2010-07-12 5 views
0

Dans mon nouveau UserViewModel que je construis pour mon application, j'ai deux options pour stocker les propriétés.Quelles sont les meilleures pratiques pour la déclaration de propriété dans un ViewModel personnalisé

La première option est d'avoir

Public Property user As User    ''# Including the entire User object 
Public Property custString as String  ''# Custom String for View 

La deuxième option est d'écrire en fait toutes les propriétés de l'utilisateur

Public Property ID As Integer    ''# Declaring each object individually 
Public Property UserName As String  ''# Here is another object found in User 
Public Property RegistrationDate As Date ''# Here is another object found in User 
Public Property custStrin As String  ''# Custom String for View 

Quelqu'un peut-il me dire ce que la meilleure façon de le faire est et pourquoi ?

J'ai actuellement obtenu la première option, cependant, je n'aime pas la façon dont il regarde dans la vue par rapport à la deuxième option

Cela ressemble bien (OMI)

<%: Model.UserName %> 

Cela ne semble pas aussi belle (OMI)

<%: Model.User.UserName %> 
+0

Je pense que vous vouliez dire '<%: Modal.User.UserName%>' '' ''%: Modal.UserName%> '? – Ahmad

+0

Non @Ahmad. J'ai actuellement la première option dans mon ViewModal. C'est pourquoi j'ai dû changer le code en modal.user.username - et ça a l'air stupide. –

Répondre

1

Je ne pense pas qu'il en soit est "mieux", cela dépend vraiment des objets eux-mêmes. Si l'objet User a des propriétés get-only, aucun constructeur public par défaut ou une logique d'état complexe, il peut ne pas être un bon candidat à être directement défini par la liaison de modèle par défaut. Habituellement dans de tels cas, vous "écrivez" un certain sous-ensemble des propriétés User en tant que propriétés correspondantes du ViewModel, qui peut ensuite gérer la configuration de l'objet Utilisateur sous-jacent. Ce scénario n'est pas rare.

Mais si votre objet User est simple et facile à lier directement, alors il est certainement plus pratique de l'utiliser directement dans votre modèle.

Questions connexes