En RC1, se modificó el comportamiento de la plantilla para crear una vista.Cómo obtener un archivo 'codebehind' para crear una vista ASP.NET-MVC en RC1 de forma predeterminada
Según lo explicado por la publicación de Scott Gu sobre el release candidate, una vista de aspx recién creada ya no tiene un archivo de código subyacente.
base en la retroalimentación que hemos cambiado vista-plantillas para no tener un archivo de código subyacente por defecto. Este cambio ayuda a reforzar el propósito de vistas en una aplicación MVC (que se pretenden ser puramente sobre la prestación ya no contiene ningún no-renderizado código relacionado) archivos, y para la mayoría de la gente elimina sin utilizar en el proyecto .
La compilación de RC ahora agrega la sintaxis de C# y VB para heredar plantillas de vista de clases base que usan genéricos. Por ejemplo, a continuación estamos utilizando este con la plantilla de vista Edit.aspx - cuyo “hereda” atributo se deriva del tipo ViewPage:
me gusta ser capaz de escribir código específico vista en el código subyacente solo para mostrar la vista, especialmente si repito la lógica en varias partes de la página donde no puedo justificar la creación de una vista parcial.
Mi pregunta real: Scott dijo por defecto - lo que implica que puedo cambiar ese comportamiento, pero me parece que no puede ver dónde. ¿Es posible? Crear manualmente un archivo de código subyacente y cambiar las cosas es un problema.
Esto provoca un problema adicional también:
- Si refactorizar el nombre de mi modelo a continuación, la directiva en la vista no se actualiza. Este no es el fin del mundo, sino una clara ventaja de tenerlo totalmente tipado.
Adición: Para aquellos que se preguntan qué querría un código subyacente aquí son algunas de las posibles razones. Esta es una lista acumulativa de casi todo lo que he pensado. No hace falta decir (así debería ser) que no debe acceder a ningún dato que no sea el que ya está en el modelo. LINQ estaría bien para la manipulación simple de los datos del modelo, ¡pero LINQ to SQL NO lo haría! MVC es para personas que ya deberían saber esto - por eso me encanta - hecho POR personas inteligentes PARA personas inteligentes.
- Controles heredados de ASP.NET de enlace de datos: si una alternativa no está disponible o si se necesita una solución temporal.
- Ver la lógica que requiere recursión para crear algún tipo de HTML anidado o jerárquico.
- Ver la lógica que usa variables temporales. ¡Me niego a definir las variables locales en mi sopa de etiquetas! Me gustaría tenerlos como propiedades en la clase de vista como mínimo.
- Lógica que es específica solo para una vista o modelo y no pertenece a un HtmlHelper. Como nota al margen, no creo que un HtmlHelper deba saber sobre ninguna clase 'Modelo'.Está bien si conoce las clases definidas dentro de un modelo (como
IEnumerable<Product>
, pero no creo, por ejemplo, que deba tener un HtmlHelper que tomeProductModel
. - Los métodos HtmlHelper terminan siendo visibles desde TODAS sus vistas cuando escribe
Html+dot
y realmente quiero minimizar esta lista tanto como sea posible. - ¿Qué pasa si quiero escribir el código que usa
HtmlGenericControl
y otras clases en ese espacio de nombres para generar mi HTML de una manera orientada a objetos (o tengo un código existente que lo hace que quiero exportar) - Qué sucede si planeo usar un motor de visualización diferente en el futuro. Es posible que desee mantener algo de lógica aparte de la sopa de etiquetas para que sea más fácil volver a utilizarla más tarde.
- ¿Qué pasa si quiero poder cambiar el nombre de mis clases de modelo y hacer que refactorice automáticamente mi vista sin tener que ir a view.aspx y cambiar el nombre de clase?
- ¿Qué pasa si estoy coordinando con un diseñador de HTML en quien no confío para no estropear la 'sopa de etiquetas' y quiero escribir algo más allá del bucle básico en el archivo .aspx.cs.
creo que la gente está sesgada en contra 'de código subyacente', ya que traditially se ha interpretado en el sentido de 'evento código de manejo' en lugar de 'la otra mitad de la clase parcial de una vista', que es lo que es.
Code-behind for views está bien.
No estoy en desacuerdo con que desordene un poco la estructura de carpetas, pero para eso está el icono +
. Solo quiero la posibilidad de crear una vista con código detrás usando 'Agregar vista'.
¿Cuál fue su conclusión? - ¿Es posible agregar una clase de código subyacente? –