ASP.NET上的.cshtml razor文件转换

时间:2014-02-19 13:23:26

标签: asp.net asp.net-mvc razor build transform

我正在尝试在构建项目时找到一种转换index.cshtml文件的方法。 比如说:

<script src="app-dev.js"></script>
当构建模式为Release

时,

成为此项

<script src="app-prod.js></script>

2 个答案:

答案 0 :(得分:2)

好的,这样可以。

为其添加appsetting:

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

然后在你的视图中添加:

<script src="app-@(System.Web.Configuration.WebConfigurationManager.AppSettings["Environment"]).js></script>

在您的其他环境中,只需使用转换来替换它,即

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

另一种选择,我认为更好的方法是将WebConfiguration经理抽象为界面,并在模型中设置应用设置。

如果它在一个公共布局中并且每次都设置可能会创建一个基本模型并将其设置在基本控制器中的OnActionExecuted中。

答案 1 :(得分: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()