Css 在 asp.net mvc3 Razor Views 中无法正常工作
Posted
技术标签:
【中文标题】Css 在 asp.net mvc3 Razor Views 中无法正常工作【英文标题】:Css is not working properly in asp.net mvc3 Razor Views 【发布时间】:2012-10-01 22:14:15 【问题描述】:我在 asp.net mvc3 上有一个应用程序并在剃刀视图中工作。
在我的布局页面上,我附加了一个 css 文件并在该文件中放置了一些 css,但是当我访问 /Account/LogOn
查看时 css 不起作用。
仅当我将 css 附加到 Logon
视图时才有效。任何人都知道为什么我在布局页面上附加的 css 在/Account/LogOn
上不起作用?
我还尝试了包含以下代码:
@
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "xyz.com – Login";
它仍然无法正常工作。在此先感谢
【问题讨论】:
【参考方案1】:使用 url helper 引用你的 css 像这样
<link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/default.css")" media="screen" />
【讨论】:
太好了,它的工作原理!!!!!!但它不能以正常的 html 方式工作的原因是什么? 因为根文件夹解析。当您使用 html 时,它找不到 css 文件,因为 logOn 视图位于不同的文件夹中。 Html 助手总是找到根目录。【参考方案2】:在您的_layout.cshtml
中,确保使用引用应用程序根目录 (~) 的路径。使用@Url.Content()
转义路径:
<link href="@Url.Content("~/Content/css/styles.css")" rel="stylesheet" type="text/css" />
【讨论】:
@smartboy 因为 MVC 页面是通过路由动态创建的,并且浏览器需要返回服务器获取 css,所以在_layout.cshtml
中使用静态 css 路由是不可能的,这将适用于不同级别的路径(/、/../ 等)。因此需要从根目录引用 css 和 js,并将其映射到 Url.Content
上述评论中的勘误 .. 不可能使用 在文件夹 Contents 下创建样式表,名称为 abc.css
现在在 LayoutPage 中包含样式表,以便它自动包含在从内容页面派生的所有页面中。
<link href="@Url.Content("~/Content/abc.css")" rel="stylesheet" type="text/css" />
【讨论】:
以上是关于Css 在 asp.net mvc3 Razor Views 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
使用razor/asp.net mvc3生成静态html页面?
asp.net mvc3.0中视图引擎razor和ASPX可以交互使用吗
ActionLink 与 ASP.NET MVC3 中的多个类