Преобразования для CSS и представлений в MVC
У меня есть приложение MVC, которое я развертываю на промежуточном сервере с помощью Team City. Я создал преобразование Web.Staging.config
для обработки различных подключений к базе данных, сертификатов и вызовов служб.
На этом промежуточном сервере у меня был запрос, чтобы заголовок представления Index
читался как "тестовая система" и имел другую цветовую схему для обозначения, с первого взгляда, что пользователь находится в тестовой системе.
До сих пор я справлялся с этим, изменяя view
в файловой системе в блокноте, и замена файла bootstrap.css
на один с другой темой, однако каждый раз, когда я делаю новую фиксацию/развертывание, эти изменения стираются, и это становится утомительным.
Есть ли возможность обрабатывать изменения CSS / view на сервере с помощью аналогичной системы преобразования, используемой для обработки web.config
2 ответа:
На самом деле нет простого способа преобразовать CSS-файлы таким образом, но то, что вы могли бы сделать, это иметь ссылку на главный CSS-файл в вашем конфигурационном файле, поэтому ваше представление будет примерно таким:
<link href='@ConfigurationManager.AppSettings["MainCSS"]'>
Тогда ваша паутина.Debug (и другие преобразования) могут указывать на правильный путь:
<add key="MainCSS" value="/Content/Site.css" />
И твоя паутина.Промежуточная конфигурация может указывать на другой:
<add key="MainCSS" value="/Content/Staging/Site.css" />
Вы также можете применить приведенную выше логику для представления индекса:
public ActionResult Index() { string viewName = ConfigurationManager.AppSettings["MainView"]; return View(viewName); }
Тогда имейте в своей паутине.Отладка и другие):
<add key="MainView" value="Index" />
И в вашей паутине.Постановка:
<add key="MainView" value="IndexStaging" />
Одним из решений может быть добавление ключа в сеть.сконфигурируйте и прочитайте его с помощью WebConfigurationManager.Параметр appsettings. Эти настройки могут быть преобразованы. В вашем представлении вы можете проверить эту настройку, если вам нужно изменить заголовок и если вам нужно загрузить дополнительный файл css. В твоей паутине.конфигурация:
<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 }
И, если вы хотите, вы можете просто переключаться между двумя бутстрэпами.файл CSS.