2009-08-26 26 views
5

Prefiero viewdata fuertemente tipado para mis vistas de asp.net mvc por varias razones y en realidad prefiero las vistas con codebehinds como lo estaban en las vistas previas de asp.net mvc porque el código fue un lugar natural para definir la clase poco viewdata, ya que generalmente tienen una relación 1: 1 con la vista real.asp.net vistas de mvc y viewdata fuertemente tipado

¿Hay alguna forma de tener el código detrás en asp.net rtm views o este no es un buen enfoque?

EDIT: La única razón por la que me gustaría tener código subyacente es que veo ViewData como una propiedad de la vista. Si la vista era una clase, ViewData era una de sus propiedades y no se considera natural definir esto en un ensamblaje por separado.

Respuesta

6

Después de casi un año junto con MVC, puedo confirmar que no he necesitado código de acceso para las vistas, ni siquiera una vez. Si utiliza el código subyacente, probablemente siga pensando en WebForms. Déjalo caer.

Las vistas deben estar allí para mostrar simplemente los datos del modelo. Las decisiones simples como qué clase de CSS aplicar se pueden realizar directamente en la vista dentro de las etiquetas del servidor. Las decisiones más complejas deben ir al controlador o lógica de negocios.

+0

¿Pero utilizas viewdata fuertemente tipado, y en caso de que estés definiendo esas clases? – terjetyl

+0

Esas clases deberían estar en su propio ensamblaje: MyProject.Models y, para proyectos más grandes, MyProject.ViewModels (o .DTO). – Jason

+0

@TT: Sí, uso vistas fuertemente tipadas. Guardo los modelos en la carpeta "Modelos".Los modelos básicamente representan una capa delgada separada que contiene los datos preparados para una vista para mostrar. –

0

Tener codebehinds for Views va en contra de uno de los propósitos de un framework MVC.

La vista debe ser lo más simple posible y centrarse únicamente en la presentación mientras permite que el controlador o las extensiones manejen toda la lógica comercial.

Aquellos con la combinación de ViewState deberían eliminar la necesidad de codebehinds.

0

No hay necesidad de código detrás en la arquitectura MVC como lo estaba con los formularios web.

Toda la arquitectura MVC se basa en el controlador que controla las cosas y no en los eventos de control web que hacen la magia.

Personalmente, me estoy metiendo en el lado oscuro de MVC, pero me gusta lo que veo aquí ahora.

Puede poner fácilmente contenido en su vista con la "vista de retorno (elemento)" en sus acciones -> donde el elemento puede ser fuertemente tipeado datos y validarlo fácilmente en su modelo. (Que es grande ya que se mostrarán los errores de entrada de la vista)

1

prefiero establecimiento inflexible viewdata para mis puntos de vista ASP.NET MVC para diversas razones

Esto todavía se puede hacer por supuesto. NerdDinner FormviewModels page 6 Lo uso y funciona perfectamente. Tuve algunos problemas que puedes encontrar en mis dos preguntas here y here .

Como dije anteriormente, no veo por qué querría usar codebehind. Si quieres, te recomiendo que leas la información general sobre la estructura de MVC y para qué sirven las vistas.

Cuestiones relacionadas