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 上述评论中的勘误 .. 不可能使用 static variable css route ...【参考方案3】:

在文件夹 Contents 下创建样式表,名称为 abc.css

现在在 LayoutPage 中包含样式表,以便它自动包含在从内容页面派生的所有页面中。

&lt;link href="@Url.Content("~/Content/abc.css")" rel="stylesheet" type="text/css" /&gt;

【讨论】:

以上是关于Css 在 asp.net mvc3 Razor Views 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

使用razor/asp.net mvc3生成静态html页面?

asp.net mvc3.0中视图引擎razor和ASPX可以交互使用吗

ASP.NET MVC Razor

ActionLink 与 ASP.NET MVC3 中的多个类

Asp.net MVC3.0用Razor视图如何实现URL伪静态?真诚求教。

[ASP.NET MVC 小牛之路]03