Asp.net mvc 3 我如何拥有特定于视图的<;头>;内容使用Asp.NETMVC3和Razor?
除了在_Layout.cshtml中已经链接的内容之外,我还想在某些视图中链接特定的样式表。对于非Razor,我看到使用内容占位符。我该如何为Razor做到这一点?令人惊讶的是(对我来说),asp:ContentPlaceHolder确实有效。不过看起来很没礼貌。我想知道还有别的办法吗 具体来说,您可以将Asp.net mvc 3 我如何拥有特定于视图的<;头>;内容使用Asp.NETMVC3和Razor?,asp.net-mvc-3,razor,stylesheet,Asp.net Mvc 3,Razor,Stylesheet,除了在_Layout.cshtml中已经链接的内容之外,我还想在某些视图中链接特定的样式表。对于非Razor,我看到使用内容占位符。我该如何为Razor做到这一点?令人惊讶的是(对我来说),asp:ContentPlaceHolder确实有效。不过看起来很没礼貌。我想知道还有别的办法吗 具体来说,您可以将放在_layout.cshtml中,然后 <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="serv
放在_layout.cshtml中,然后
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<link href="@Url.Content("~/Content/StandardSize.css")" rel="stylesheet" type="text/css" />
</asp:Content>
在您看来。Razor中的内容占位符等效于部分 在您的_Layout.cshtml中:
<head>
@RenderSection("Styles", required: false)
</head>
<head>
@foreach(string style in ViewBag.Styles ?? new string[0]) {
<link href="@Url.Content(style)" />
}
</head>
这是因为视图页面在布局之前执行。在您看来,它才起作用。你看过生成的HTML了吗?你是对的。我只是看到应用了我想要的样式,但我没有检查HTML。我想知道Razor是如何处理服务器标记的。这也是向头部添加特定于视图的脚本引用的一种很好的方法。对于尚未将其解决方案转换为使用Razor的人来说,替代解决方案很好。谢谢
<head>
@foreach(string style in ViewBag.Styles ?? new string[0]) {
<link href="@Url.Content(style)" />
}
</head>
@{
ViewBag.Styles = new[] { "~/Content/StandardSize.css" };
}