CSS 的转换和 MVC 中的视图
Transforms for CSS and Views in MVC
我有一个 MVC 应用程序,我正在使用 Team City 将其部署到暂存服务器。我创建了一个 Web.Staging.config
转换来处理不同的数据库连接、证书和服务调用。
在此登台服务器上,我已请求将 Index
视图的标题改为 "TEST SYSTEM" 并使用不同的配色方案来表示,一眼就能看出用户是在测试系统上。
到目前为止,我已经通过在记事本中更改文件系统上的 view
并将 bootstrap.css
文件交换为具有不同主题的文件来处理这个问题,但是每次我做一个新的 commit/deploy 这些更改被抹去,变得令人厌烦。
是否可以通过使用与处理 web.config
类似的转换系统来处理每个服务器的 CSS/view 更改
没有真正的 简单 方法来转换 CSS 文件,但你可以做的是拥有你的主 CSS 文件 link 在您的配置文件中,因此您的视图将类似于:
<link href='@ConfigurationManager.AppSettings["MainCSS"]'>
然后您的 web.Debug(和其他转换)可以指向正确的路径:
<add key="MainCSS" value="/Content/Site.css" />
您的 web.Staging 配置可能指向另一个:
<add key="MainCSS" value="/Content/Staging/Site.css" />
您还可以为您的索引视图应用上述逻辑:
public ActionResult Index()
{
string viewName = ConfigurationManager.AppSettings["MainView"];
return View(viewName);
}
然后在您的 web.Debug(和其他人)中加入:
<add key="MainView" value="Index" />
在你的web.Staging中:
<add key="MainView" value="IndexStaging" />
一种解决方案是向 web.config 添加密钥并使用 WebConfigurationManager.AppSettings 读取它。这些设置是可以改变的。在您看来,如果您需要更改标题以及是否需要加载额外的 css 文件,您可以检查此设置。
在你的 web.config:
<appSettings>
<add key="IsTestSystem" value="False" />
</appSettings>
并作为转换:
<appSettings>
<add key="IsTestSystem" value="True" xdt:Locator="Match(key)" xdt:Transform="SetAttributes"/>
</appSettings>
在您的视图/布局中:
if (Boolean.TryParse(WebConfigurationManager.AppSettings["IsTestSystem"] ?? "False", out run)) {
// include css file for test system or modify the title
}
而且,如果需要,您可以在两个 bootstrap.css 文件之间切换。
我有一个 MVC 应用程序,我正在使用 Team City 将其部署到暂存服务器。我创建了一个 Web.Staging.config
转换来处理不同的数据库连接、证书和服务调用。
在此登台服务器上,我已请求将 Index
视图的标题改为 "TEST SYSTEM" 并使用不同的配色方案来表示,一眼就能看出用户是在测试系统上。
到目前为止,我已经通过在记事本中更改文件系统上的 view
并将 bootstrap.css
文件交换为具有不同主题的文件来处理这个问题,但是每次我做一个新的 commit/deploy 这些更改被抹去,变得令人厌烦。
是否可以通过使用与处理 web.config
没有真正的 简单 方法来转换 CSS 文件,但你可以做的是拥有你的主 CSS 文件 link 在您的配置文件中,因此您的视图将类似于:
<link href='@ConfigurationManager.AppSettings["MainCSS"]'>
然后您的 web.Debug(和其他转换)可以指向正确的路径:
<add key="MainCSS" value="/Content/Site.css" />
您的 web.Staging 配置可能指向另一个:
<add key="MainCSS" value="/Content/Staging/Site.css" />
您还可以为您的索引视图应用上述逻辑:
public ActionResult Index()
{
string viewName = ConfigurationManager.AppSettings["MainView"];
return View(viewName);
}
然后在您的 web.Debug(和其他人)中加入:
<add key="MainView" value="Index" />
在你的web.Staging中:
<add key="MainView" value="IndexStaging" />
一种解决方案是向 web.config 添加密钥并使用 WebConfigurationManager.AppSettings 读取它。这些设置是可以改变的。在您看来,如果您需要更改标题以及是否需要加载额外的 css 文件,您可以检查此设置。 在你的 web.config:
<appSettings>
<add key="IsTestSystem" value="False" />
</appSettings>
并作为转换:
<appSettings>
<add key="IsTestSystem" value="True" xdt:Locator="Match(key)" xdt:Transform="SetAttributes"/>
</appSettings>
在您的视图/布局中:
if (Boolean.TryParse(WebConfigurationManager.AppSettings["IsTestSystem"] ?? "False", out run)) {
// include css file for test system or modify the title
}
而且,如果需要,您可以在两个 bootstrap.css 文件之间切换。