基於「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
基於「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
,因爲我可以得到接近的是:
<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>
它會很容易推出自己的。您可能會錯過編譯常量的一些非編譯功能,但您肯定有能力添加基於某種全局參數的標記。
如何使用Literal,然後在代碼隱藏中使用#if DEBUG將HTML文本插入到文本中?也有在ASP.NET中的直接代碼塊,但我不知道他們是否處理#if語句;那些似乎是爲C#編譯器保留的。
<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">
有沒有一種方法可以在調試時自動設置爲true,反之亦然? – Guy 2012-04-09 12:12:50
如果你想步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文件,以便只有一個服務器的腳本製作的要求。
錯誤的答案被設置爲正確的答案。 – 2013-08-24 21:38:23