2008-12-18 66 views
32

基於「Define DEBUG常量」設置,我可以在asp.net頁面的標記中做這樣的事情嗎?Asp.net標記是否存在#IF DEBUG?

#IF (DEBUG) THEN 
    <asp:TextBox ID="TextBox1" runat="server">You're in debug mode</asp:TextBox> 
#END IF 
+1

錯誤的答案被設置爲正確的答案。 – 2013-08-24 21:38:23

回答

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> 
-1

它會很容易推出自己的。您可能會錯過編譯常量的一些非編譯功能,但您肯定有能力添加基於某種全局參數的標記。

0

如何使用Literal,然後在代碼隱藏中使用#if DEBUG將HTML文本插入到文本中?也有在ASP.NET中的直接代碼塊,但我不知道他們是否處理#if語句;那些似乎是爲C#編譯器保留的。

56
<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爲這些文本框。

另外請注意,DEBUG是真實的,當它在web.config中設置成:

<compilation debug="true"> 
+0

有沒有一種方法可以在調試時自動設置爲true,反之亦然? – Guy 2012-04-09 12:12:50

6

如果你想步JavaScript或喜歡來縮小時沒有調試JavaScript的,我更喜歡這種方法:

<% if (Debugger.IsAttached) { %> 

    <script src="jquery.js"></script> 

<% } else { %> 

    <script src="jquery.min.js"></script> 

<% } %> 

我可以在調試時輕鬆地遍歷代碼,否則我希望腳本被縮小。一定要包括以下導入:

<%@ Import Namespace="System.Diagnostics" %> 

而且,它是很好使用Web必備的Visual Studio擴展捆綁/壓縮JavaScript文件,以便只有一個服務器的腳本製作的要求。

相關問題