rid*_*nsb 5 conditional-compilation visual-studio-2010 razor c#-4.0 asp.net-mvc-3
在stackoverflow上阅读这篇文章想要在编译发布模式时加载不同的css.
码:
@{ #if (Debug)
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
#else
<link href="@Url.Content("~/Content/Site-min.css")" rel="stylesheet" type="text/css" />
#endif
}
Run Code Online (Sandbox Code Playgroud)
尝试2
@{ #if (Debug) }
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
@{ #else }
<link href="@Url.Content("~/Content/Site-min.css")" rel="stylesheet" type="text/css" />
@{ #endif }
Run Code Online (Sandbox Code Playgroud)
我尝试以大写形式进行DEBUG但是在编译Debug to Release时没有任何改变没有效果
根据这篇SO帖子,如果你想要这样的东西工作,你可以使用你的模型中的属性来驱动View的条件内容,所以C#IsDebug通过编译时指令设置模型的布尔(或者其他)和View依赖于此.
所以你的模型会结束这样的事情:
bool IsDebug = true;
#if (!DEBUG)
IsDebug = false;
#endif
Run Code Online (Sandbox Code Playgroud)
你的View会做类似的事情:
@if(Model.IsDebug)
{
}
else
{
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用ViewBag/ViewData来保存该布尔值.
更新:
根据您的评论,您可以做以下事情:
创建一个BaseController继承自的新类Controller.
public abstract class BaseController : Controller
{
...
protected BaseController()
{
bool indebug = false;
#if DEBUG
indebug = true;
#endif
ViewBag.InDebug = indebug;
}
}
Run Code Online (Sandbox Code Playgroud)
并让您的控制器继承自此而不是Controller.
然后在你的_Layout.cshtml中你可以这样做:
@if (ViewBag.InDebug)
{
}
else
{
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常.
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |