基于“定义DEBUG常量”设置,我可以在asp.net页面的标记中执行类似的操作吗?
#IF (DEBUG) THEN
<asp:TextBox ID="TextBox1" runat="server">You're in debug mode</asp:TextBox>
#END IF
答案 0 :(得分:58)
<form runat="server">
<% #if DEBUG %>
<asp:TextBox ID="TextBox1" runat="server">You're in debug mode</asp:TextBox>
<% #else %>
<asp:TextBox ID="TextBox2" runat="server">Mmm... No, I think you're not in debug mode</asp:TextBox>
<% #endif %>
</form>
请注意,您无法为这些文本框分配相同的ID。
另请注意,在web.config中设置DEBUG时为真:
<compilation debug="true">
答案 1 :(得分:6)
我能得到的结果是:
<asp:Literal id="isDebug" runat="server" />
<script runat="server">
void Page_Load()
{
#if DEBUG
isDebug.Text = "You're in debug mode";
#endif
}
</script>
如果你想在Page_Load()事件中有任何其他内容,这会给你带来麻烦;上面的文字代码仅在页面/控件后面没有代码时才有效。
如果我需要这样做,我会将上面的代码包含在用户控件中,并将该控件包含在感兴趣的页面中。
我的测试用户控件如下所示:
<%@ Control Language="C#" AutoEventWireup="true" %>
<asp:Literal id="isDebug" runat="server" />
<script runat="server">
void Page_Load()
{
#if DEBUG
isDebug.Text = "You're in debug mode";
#endif
}
</script>
答案 2 :(得分:6)
如果您尝试单步执行javascript或者在不调试时更喜欢缩小javascript,我更喜欢这种方法:
<% if (Debugger.IsAttached) { %>
<script src="jquery.js"></script>
<% } else { %>
<script src="jquery.min.js"></script>
<% } %>
我在调试时可以轻松单步执行代码,否则我希望缩小脚本。请务必包含以下导入:
<%@ Import Namespace="System.Diagnostics" %>
此外,最好使用Web Essentials visual studio扩展来捆绑/缩小您的javascript文件,以便只为服务器提供一个脚本请求。
答案 3 :(得分:0)
如何使用Literal然后在代码隐藏中使用#if DEBUG将文本框的html注入文字? ASP.NET中还有直接的代码块,但我不知道它们是否处理#if语句;那些似乎是为C#编译器保留的。
答案 4 :(得分:-1)
滚动你自己很容易。您可能会错过编译常量的一些较冷的非编译功能,但您肯定能够根据某种全局参数添加标记。