En un .NET MVC4
proyecto, ¿cómo @Styles.Render
funciona?
Quiero decir, ¿en @Styles.Render("~/Content/css")
qué archivo está llamando?
No tengo un archivo o una carpeta llamada "css" dentro de mi Content
carpeta.
En un .NET MVC4
proyecto, ¿cómo @Styles.Render
funciona?
Quiero decir, ¿en @Styles.Render("~/Content/css")
qué archivo está llamando?
No tengo un archivo o una carpeta llamada "css" dentro de mi Content
carpeta.
Respuestas:
Llama a los archivos incluidos en ese paquete particular que se declara dentro de la BundleConfig
clase en la App_Start
carpeta.
En ese caso particular, la llamada a @Styles.Render("~/Content/css")
está llamando "~ / Content / site.css".
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
cargo de los *.*
archivos.
Cuidado con la mayúsculas y minúsculas. Si tienes un archivo
/Content/bootstrap.css
y redirige en su Bundle.config a
.Include ("~ / Content / Bootstrap.css")
no cargará el css.
Un poco tarde para la fiesta. Pero parece que nadie ha mencionado la
agrupación y minificación de StyleBundle
, así que ...
@Styles.Render("~/Content/css")
llamadas en Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
que a su vez llama
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
efectivamente combina y minimiza bootstrap.css
y Site.css
en un solo archivo,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Pero ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
sólo cuando debug
se establece en false
en Web.config
.
De lo contrario bootstrap.css
y Site.css
se servirá de forma individual.
No incluido, ni minimizado:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Como se define en App_start.BundleConfig, solo está llamando
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
No pasa nada incluso si elimina esa sección.
Polo No usaría Bundles en MVC por múltiples razones. No funciona en su caso porque tiene que configurar una clase BundleConfig personalizada en su carpeta Apps_Start. Esto no tiene sentido cuando simplemente puede agregar un estilo en la cabeza de su html de esta manera:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
También puede agregarlos a un Layout.cshtml o clase parcial que se llama desde todas sus vistas y se deja caer en cada página. Si sus estilos cambian, puede cambiar fácilmente el nombre y la ruta sin tener que volver a compilar.
Agregar enlaces codificados a CSS en una clase se rompe con el propósito de separar la interfaz de usuario y el diseño del modelo de la aplicación. Tampoco desea que las rutas de hoja de estilo codificadas se administren en c # porque ya no puede crear "máscaras" o modelos de estilo separados para diferentes dispositivos, temas, etc.
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Con este sistema y Razor, ahora puede cambiar la ruta de acceso de la piel desde una base de datos o configuración de usuario y cambiar todo el diseño de su sitio web simplemente cambiando la ruta de forma dinámica.
Todo el propósito de CSS hace 15 años era desarrollar "máscaras" de hoja de estilo controladas por el usuario y controladas por la aplicación para los sitios, de modo que pudiera cambiar el aspecto y la sensación de la interfaz de usuario por separado de la aplicación y reutilizar el contenido independientemente de la estructura de datos. .... por ejemplo, una versión imprimible, móvil, audio, raw xml, etc.
Al regresar ahora a este sistema de ruta "antiguo" y codificado utilizando clases de C #, estilos rígidos como Bootstrap y fusionando los temas de los sitios con el código de la aplicación, hemos retrocedido nuevamente a cómo se crearon los sitios web en 1998.
minification
entonces? : s / :(
Hice todo lo necesario para agregar paquetes a una web MVC 3 (soy nuevo en la solución existente). Styles.Render
No funcionó para mí. Finalmente descubrí que simplemente me faltaba un colon. En una página maestra: <%: Styles.Render("~/Content/Css") %>
todavía estoy confundido acerca de por qué (en la misma página) <% Html.RenderPartial("LogOnUserControl"); %>
funciona sin los dos puntos.