ASP.NET MVC动态样式表

时间:2010-08-24 01:34:42

标签: asp.net asp.net-mvc-2

我正在开发的项目允许最终用户修改CSS代码以尽可能地集成应用程序。大多数CSS值都存储在数据库中,需要动态检索和解析。

我设置了一个Style控制器,并为每个样式表提供了一个操作,然后将配置数据传递给View。我将ContentType设置为“text / css”,然后生成样式表。

这很好用,但我遇到的问题是:应用程序中的代码都不起作用。我将它包含在头代码中,但它不会在代码中解析。

我所做的一个例子是:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" ContentType="text/css" %>

.element {
    background-color: <%= ViewData.Model.BackgroundColor %>;
}

我这样包括它:

<link href="/style/Basic" rel="stylesheet" type="text/css" media="all" />

当我在部分视图中包含CSS代码并在动作中使用ViewModel(包装在样式标记中)包含它时,一切正常。当我尝试将其解析为单独的文件时,它就会失效。

我做错了吗?或者是否存在某种故障?

提前致谢:D

2 个答案:

答案 0 :(得分:1)

使用HTTPWatch等工具验证样式表是否已发送,而不是404'd

答案 1 :(得分:1)

控制器

 public ActionResult Basic()
    {
        Response.ContentType = "text/css";
        var basicVM = new BasicVM()
                          {
                              BackgroundColor = "Lime",

                          };
        return View(basicVM);

    }

和视图

 <%@ Page Language="C#"   Inherits="System.Web.Mvc.ViewPage<MvcApplication3.Controllers.BasicVM>"       ContentType="text/css" %>
    body {
      background-color: <%= ViewData.Model.BackgroundColor %>;
        }

和测试页

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" >
 <head runat="server">
     <title>Test</title>
     <link href="/Home/Basic" rel="stylesheet" type="text/css" media="all" />
 </head>
 <body>
     <div>
      Test
     </div>
 </body>
 </html>

将一切变为绿色