2014-02-19 2 views

ответ

2

Хорошо, это будет работать.

Добавить appsetting для него:

<add key="Environment" value="dev"/> 

Затем в целях добавить:

<script src="[email protected](System.Web.Configuration.WebConfigurationManager.AppSettings["Environment"]).js></script> 

В других ваших условиях просто использовать преобразования для замены т.е.

<appSettings>  
    <add key="Environment" value="prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /> 
</appSettings> 

альтернатива, и я считаю, что лучшим подходом было бы абстрагирование от WebConfiguration ma nager в качестве интерфейса и вместо этого установите параметр приложения в модели.

Если он находится в общей компоновке и каждый раз может создать базовую модель и установить ее в OnActionExecuted вместо базового контроллера.

+0

Я использую 'appsetting' soluion и работает достаточно хорошо. Единственное, что он работает при публикации только, а не при запуске приложения из VS. Благодарю. – Ludohen

+0

@ Ludohen Nice one, да решение будет работать только при публикации, поскольку оно зависит от веб-преобразований. – hutchonoid

+0

Кстати, как бы вы объявили/получили доступ к Env. переменная от контроллера? – Ludohen

0

В нашем случае решение должно быть принято на основе того, является ли сборка отладочной сборкой или выпуском сборки. Мы создали Mvc метод расширения помощник в

 public static MvcHtmlString CustomScriptTag(this HtmlHelper helper) 
     { 
      var scriptString = string.Format("<script type='text/javascript' src='{0}'></script>", VirtualPathUtility.ToAbsolute("~/app-prod.js")); 

#if DEBUG 
      scriptString = string.Format("<script type='text/javascript' src='{0}'></script>", VirtualPathUtility.ToAbsolute("~/app-dev.js")); 
#endif 

      return new MvcHtmlString(scriptString); 
     } 

Из файла cshtml вы можете назвать это как

@Html.CustomScriptTag() 
Смежные вопросы