2009-06-02 11 views

Respuesta

2

EmployeesViewData.

Eso es lo que uso y lo que he visto en las aplicaciones de muestra también.

Acerca de su ejemplo agregado: Imho el nombre de la clase debe especificar qué tipo de datos contiene. ".... IndexViewData" no tiene sentido. ¿Qué se muestra exactamente en esa página? Intenta resumirlo en 1 o 2 palabra (s) y agrega 'ViewData' detrás de él.

O bien simplemente tome el nombre del controlador y suelte el "índice". HomeViewData me parece bien.

0

Prefiero HomeViewModel, o usando el ejemplo de empleado anterior, CreateEmployeeViewModel, EditEmployeeViewModel, etc. La idea es que el "ViewModel" enfatiza el hecho de que estamos tratando problemas de presentación, y desambigua los ViewModels de cualquier modelo de dominio de objetos que puedes tener.

1

Intento mantener mis nombres de modelo de presentación independientes del tipo de presentación que se presentarán. Puedo usar mi objeto modelo para una vista ASP.NET inicialmente, pero más tarde también puedo usarlo en una aplicación WCF o WinForms. Trato de nombrar mis modelos de tal manera que, lógicamente, describen lo que contienen, sin enturbiar con ellos "ViewData", "modelo de vista", "Modelo", etc.

Ejemplos:

ProductsWithPageInfo 
ProductWithAttributesAndTags 
ClientAndBillingDetail 
UserAccountWithAssociatedGroups 

Etc.

+0

¿Qué haces si tienes una página que tiene varias de esas, por ejemplo, una página con ProductsWithPageInfo que también necesita ProductWithAttributesAndTags? – Alex

+0

Bueno, estos tipos ya son agregaciones de otros tipos. Por ejemplo, ProductsWithPageInfo tiene un IList , int PageNumber e int PageCount. Cada objeto de "modelo" de presentación contiene lo que sea necesario para representar una vista particular. A veces, si hay MUCHAS cosas en un modelo, añadiré Etc al final: ProductAttributesPurchaseHistoryEtc, donde Etc significa pequeños detalles (como el número de página y el recuento) que no necesitan ser representados en el nombre del clase. En el caso de su ejemplo: ProductsWithAttributesAndTagsEtc – jrista

0

He estado usando el término Envelope como parte de mis nombres, el cual comencé a usar poco antes de leer el capítulo 1 del libro de Wrox y descubrí que el término más comúnmente aceptado es ViewModel.

Sin embargo, estos ViewSopes que creo son solo para una encapsulación muy simple cuando tengo dos o más modelos fuertemente tipados (normalmente no relacionados) que me gustaría entregar a mi View. Lo hacen no contienen cualquier otra funcionalidad --- el sobre está destinado solo como mecanismo de entrega en este sentido, mientras que el término ViewModel, para mí, parece menos descriptivo de cómo lo estoy usando, y también posiblemente más ambiguo en cuanto a cuál es su verdadero propósito

Podría crear, por ejemplo, una clase CustomerUpdateEnvelope que existe únicamente para entregar un objeto Customer y un objeto NewsTicker no relacionado, por ejemplo, a mi vista de actualización del cliente.

21

uso el siguiente patrón porque es clara e inequívoca:

  • Modelo: Foo
  • Vista: FooView
  • modelo de vista: FooViewModel
0

bastante tarde para este hilo en particular, pero He escrito algunas sugerencias un poco más detalladas sobre ViewModel naming conventions en una publicación de blog, que puede ser útil para otros.