2009-03-04 26 views
6

He estado anidando mis clases de viewdata dentro de mis controladores y, a medida que sus números crecen, empiezo a preguntarme si esta es una buena idea. Por otra parte, algo relacionado con la contaminación de los directorios/Views y/Controllers con estas cosas parece estar apagado.¿Dónde debería colocar mi asp.net-mvc fuertemente tipado viewdata?

¿Hay alguna convención que me falta aquí? Tal vez un directorio/ViewData? idk, ¿cuáles son algunas buenas ubicaciones para mis clases de viewdata?

Respuesta

0

Hice exactamente lo que está sugiriendo, tengo mi viewdata fuertemente tipado que vive en/ViewData. Pensé en ponerlo en el directorio \ Model pero no me gusta que mis proyectos tengan demasiados directorios anidados. el \ ViewData es también lo que Kigg hace.

0

Puse mis clases de datos de vista en un proyecto dedicado precisamente a eso. Son DTO, y ponerlos en su propio proyecto exige que no dependan de nada en las capas arquitectónicas.

Utilizándolos como DTO para entregar a las vistas es solo una forma de ponerlos en uso. Podría enviarlos por cable algún tiempo, dentro de un mensaje en un autobús de servicio o lo que sea.

3

No conozco una convención. Acabo de poner el mío en /Model/ViewModel/BlahViewModel.cs, etc. No los pondría en un proyecto separado hasta que haya una necesidad específica para eso. No sería difícil moverlos más adelante si es necesario.

0

dado que está utilizando MVC y la estructura de carpetas debe representar la estructura de espacio de nombres de su código que recomendaría para cada uno de sus dominios de objeto que debe agrupar sus controladores, modelos y servicios en carpetas separadas

que utilizaría

  • nombreDeDominio

     Controllers 
        Model 
        Services 
    
+0

derecha, pero donde ¿pondrías las clases viewdata? Controladores y Vistas dependen de ellos. –

+0

En la carpeta del modelo, ya que querrá pasar el modelo a la vista desde el controlador. MvcContrib tiene algunas extensiones excelentes para permitirle pasar modelos de datos a viewdata como ViewData.Add (modelInstance) y ViewData.Get () – Richard

Cuestiones relacionadas