sintaxis proyecto plantilla net mvc desarrollo cshtml con bootstrap asp asp.net-mvc razor

asp.net-mvc - desarrollo - plantilla bootstrap en proyecto asp net mvc



Compartiendo vistas de Razor entre proyectos. (3)

Hay nuevas opciones (IMHO) mejor disponibles. Aprovecharía la organización de los splices como Feature en ASP MVC Core, esto ahorraría mucho tiempo en el camino, lo recomendaría en 2 pasos.

  1. Primero, organice / colóquelo en un área llamada Features empalmes splices . splices . cabléala como en el artículo y bien explicada.

    // you''re telling ASP that you''ve other Feature areas that it should look public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations) { // Error checking removed for brevity var controllerActionDescriptor = context.ActionContext.ActionDescriptor as ControllerActionDescriptor; string featureName = controllerActionDescriptor.Properties["feature"] as string; foreach (var location in viewLocations) { yield return location.Replace("{3}", featureName); } }

  2. En segundo lugar, incrustar características en un Shared project o Portable Libraries . He adjuntado enlaces sobre cómo hacer esto desde R. Williams y MSDN.

En resumen, dado que ya lo tiene en un área común, considérelo como una característica e insértelo dentro de una biblioteca portátil o un Proyecto compartido . Un buen artículo de R. Williams.

Quiero compartir el diseño (Vistas de encabezado, navegación y Afeitar pie de página) en varios proyectos MVC de ASP.NET. ¿Cómo puedo hacer eso?

¿Puedo crear un paquete NuGet personalizado para envolver los archivos, imágenes y CSS comunes de Razor?


He golpeado esto más de una vez a través de Google ahora, y aunque plantearía otra solución (que, en mi opinión, es mucho más segura y manejable que el uso de precompiladores y paquetes).

De hecho, he desechado descaradamente literalmente una respuesta de Erik Phillips, así que por favor, agradezca a él.

lo que dijo ... (dice esto para archivos javascript en particular, pero esto funciona igual de bien con cualquier otro tipo) fuente respuesta

Esto es lo que yo recomendaría:

Haga clic con el botón derecho en la solución y cree una Nueva carpeta de soluciones llamada Common Javascript Files (o como quiera que lo llame).

Haga clic con el botón derecho en la Solución, haga clic en Abrir carpeta en el Explorador de Windows o navegue allí manualmente para otras versiones de Visual Studio :(

En el directorio de la solución, cree un directorio con el mismo nombre que la carpeta de la solución (las carpetas de la solución normalmente no coinciden con los directorios en el nivel del código fuente, pero esto lo hará por razones de seguridad).

En este nuevo directorio, agregue archivos que deban ser compartidos entre soluciones.

En Visual Studio, haga clic en la carpeta de la solución y seleccione Agregar - Elemento existente .

En el cuadro de diálogo de selección de archivos, navegue hasta el directorio creado anteriormente, seleccione los archivos agregados al directorio y haga clic en Agregar .

En cada proyecto que necesita un archivo compartido, haga clic con el botón derecho en el proyecto (o directorio dentro del proyecto) y haga clic en Agregar - Elemento existente .

Navegue hasta el Directorio compartido, seleccione los archivos y haga clic en la flecha desplegable y luego haga clic en Agregar como enlace .

Ahora los archivos en los proyectos son esencialmente atajos a los archivos en la Carpeta de soluciones. Pero se tratan como archivos reales en el proyecto (esto incluye archivos .CS o Visual Basic, se compilarán como archivos que realmente existen en el proyecto).

PROS

  • Los archivos son realmente compartidos entre proyectos en tiempo de diseño
  • Solo se pueden agregar los archivos necesarios para cada proyecto, no es todo o nada
  • No requiere ninguna configuración en IIS (directorio virtual, etc.)
  • Si la solución está en el control Fuente TFS, puede agregar el Directorio a la Fuente TFS y los archivos compartidos serán controlados por la fuente.
  • Editar un archivo seleccionándolo en el Proyecto, editará el archivo real.
  • Eliminar un archivo vinculado no elimina el archivo.
  • Esto no se limita a los archivos JS, los archivos vinculados pueden ser CUALQUIER archivo que pueda necesitar (Imágenes, Css, Xml, CS, CSHTML, etc.)

CONTRAS

  • Cada despliegue obtiene su propio archivo.
  • Hay una pequeña curva de aprendizaje al comprender que las carpetas de soluciones no son directorios que existen en un directorio de soluciones.

Y - robando de una respuesta más para consolidar la información, aquí es cómo puede obtener estos resultados para la depuración (tomado del comentario debajo de la respuesta raspada, enlace a la publicación del blog para el objetivo de compilación para la salida para la depuración )

Agregue esto a cada archivo .csproj cada proyecto consumidor:

<Target Name="CopyLinkedContentFiles" BeforeTargets="Build"> <Copy SourceFiles="%(Content.Identity)" DestinationFiles="%(Content.Link)" SkipUnchangedFiles=''true'' OverwriteReadOnlyFiles=''true'' Condition="''%(Content.Link)'' != ''''" /> </Target>


Tres enfoques:

  1. Comparta el código fuente de la vista Razor usando su sistema de control de versiones
  2. Compile las vistas en un archivo DLL separado para compartir binario.
  3. Crear un paquete NuGet

Consulte Compile sus vistas de ASP.NET MVC Razor en una DLL separada para saber cómo hace la opción 2.

Para la opción 3, vea Crear y publicar un paquete .

De hecho, creo que este es el artículo original sobre cómo compilar vistas de Razor: precompile sus vistas de MVC Razor utilizando RazorGenerator