Преобразования для CSS и представлений в MVC


У меня есть приложение MVC, которое я развертываю на промежуточном сервере с помощью Team City. Я создал преобразование Web.Staging.config для обработки различных подключений к базе данных, сертификатов и вызовов служб.

На этом промежуточном сервере у меня был запрос, чтобы заголовок представления Index читался как "тестовая система" и имел другую цветовую схему для обозначения, с первого взгляда, что пользователь находится в тестовой системе.

До сих пор я справлялся с этим, изменяя view в файловой системе в блокноте, и замена файла bootstrap.css на один с другой темой, однако каждый раз, когда я делаю новую фиксацию/развертывание, эти изменения стираются, и это становится утомительным.

Есть ли возможность обрабатывать изменения CSS / view на сервере с помощью аналогичной системы преобразования, используемой для обработки web.config

2 2

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.