我试图在ASPX页面中使用预处理器指令,但该页面无法识别它。这就是我不能做的事吗?
背景:我正在尝试在调试模式中包含jQuery的完整版(好吧,debugging = ),以及用于发布的精简版。我试过了,但我对ASPX <%语法不是很熟悉。我只是从根本上误解了这个语法的作用吗?
<% #if DEBUG %>
<script type="text/javascript" src="resources/jquery-1.3.2.js" />
<% #else %>
<script type="text/javascript" src="resources/jquery-1.3.2.min.js" />
<% #endif %>发布于 2010-01-27 05:26:12
这里有一个有趣的区别--在aspx页面中使用#if DEBUG从web.config中的标记中提取,但是当您在代码隐藏中使用它时,它从项目文件中的构建配置中提取出DEBUG常量。所以他们实际上是在访问两个不同的设置。
因此,据我所知,这实际上是不可能的。
发布于 2013-09-09 19:34:03
对我来说,最好的解决方案是使用预处理器指令在代码隐藏中简单地定义一个字段,然后从aspx页面检查它的值。
在代码隐藏中:
public partial class WebClient : System.Web.UI.Page
{
#if DEBUG
public bool DebugMode = true;
#else
public bool DebugMode = false;
#endif
}Aspx页面:
<%if(this.DebugMode){%>
<script type="text/javascript" src="resources/jquery-1.3.2.js" />
<%}%>
<%else{%>
<script type="text/javascript" src="resources/jquery-1.3.2.min.js" />
<%}%>发布于 2009-11-26 10:54:24
一种更好的方法可能是使用服务器端代码来包含脚本。我会使用像这样的东西
protected void Page_Load(object sender, EventArgs e)
{
#if DEBUG
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "JQueryScript", "resources/jquery-1.3.2.js");
#else
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "JQueryScript", "resources/jquery-1.3.2.min.js");
#endif
}https://stackoverflow.com/questions/1801007
复制相似问题