Em um .NET MVC4
projeto, como @Styles.Render
funciona?
Quero dizer, em @Styles.Render("~/Content/css")
qual arquivo ele está chamando?
Eu não tenho um arquivo ou uma pasta chamada "css" dentro da minha Content
pasta.
Em um .NET MVC4
projeto, como @Styles.Render
funciona?
Quero dizer, em @Styles.Render("~/Content/css")
qual arquivo ele está chamando?
Eu não tenho um arquivo ou uma pasta chamada "css" dentro da minha Content
pasta.
Respostas:
Ele está chamando os arquivos incluídos nesse pacote específico que é declarado dentro da BundleConfig
classe na App_Start
pasta.
Nesse caso específico, a chamada para @Styles.Render("~/Content/css")
está chamando "~ / Content / site.css".
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
mais *.*
arquivos.
Cuidado com a distinção entre maiúsculas e minúsculas. Se você tem um arquivo
/Content/bootstrap.css
e você redireciona no seu Bundle.config para
.Include ("~ / Content / Bootstrap.css")
não carregará o css.
Um pouco atrasado para a festa. Mas parece que ninguém mencionou
empacotamento e minificação de StyleBundle
, então ..
@Styles.Render("~/Content/css")
chama em Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
que por sua vez chama
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
combina eficazmente e minifies bootstrap.css
e Site.css
em um único arquivo,
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
Mas ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
somente quando debug
estiver definido como false
no Web.config
.
Caso contrário, bootstrap.css
e Site.css
será servido individualmente.
Não empacotado, nem minificado:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
Conforme definido em App_start.BundleConfig, está apenas chamando
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
Nada acontece mesmo se você remover essa seção.
Polo: Eu não usaria Bundles no MVC por várias razões. Não funciona no seu caso, porque você precisa configurar uma classe BundleConfig personalizada na sua pasta Apps_Start. Isso não faz sentido quando você pode simplesmente adicionar um estilo na cabeça do seu html da seguinte forma:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
Você também pode adicioná-los a um Layout.cshtml ou classe parcial que é chamada a partir de todas as suas visualizações e solta em cada página. Se seus estilos mudarem, você poderá alterar facilmente o nome e o caminho sem precisar recompilar.
A adição de links codificados ao CSS em uma classe quebra com o objetivo de separar a interface do usuário e o design do modelo de aplicativo. Você também não deseja que os caminhos das folhas de estilo codificadas sejam gerenciados em c # porque não é mais possível criar "skins" ou separar modelos de estilo, por exemplo, diferentes dispositivos, temas etc., como:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
Usando este sistema e o Razor, agora você pode mudar o Skin Path de um banco de dados ou configuração do usuário e alterar todo o design do seu site, apenas alterando o caminho dinamicamente.
Todo o objetivo do CSS há 15 anos era desenvolver "skins" de folhas de estilos controladas pelo usuário e controladas por aplicativos para sites, para que você pudesse mudar a aparência da interface do usuário e se sentir separada da aplicação e redirecionar o conteúdo independentemente da estrutura de dados. .... por exemplo, uma versão imprimível, móvel, versão de áudio, xml bruto, etc.
Voltando agora a esse sistema de caminho codificado e "antiquado" usando classes C #, estilos rígidos como o Bootstrap e mesclando os temas dos sites com o código do aplicativo, voltamos ao modo como os sites foram criados em 1998.
minification
então? : s / :(
Fiz todas as coisas necessárias para adicionar o pacote a uma web do MVC 3 (sou novo na solução existente). Styles.Render
não funcionou para mim. Finalmente descobri que estava simplesmente faltando dois pontos. Em uma página mestra: <%: Styles.Render("~/Content/Css") %>
ainda estou confuso sobre o porquê (na mesma página) <% Html.RenderPartial("LogOnUserControl"); %>
funciona sem dois pontos.