Могу ли я сделать что-то подобное в разметке страницы asp.net, основываясь на настройке "Определить константу DEBUG"?
#IF (DEBUG) THEN
<asp:TextBox ID="TextBox1" runat="server">You're in debug mode</asp:TextBox>
#END IF
Могу ли я сделать что-то подобное в разметке страницы asp.net, основываясь на настройке "Определить константу 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>
<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>
Обратите внимание, что вы не можете назначить один и тот же идентификатор для этих текстовых полей.
Также обратите внимание, что DEBUG истинно, когда он установлен так в web.config:
<compilation debug="true">
Если вы пытаетесь выполнить javascript или предпочитаете минимизировать javascript, когда не отлаживаете, я предпочитаю этот подход:
<% if (Debugger.IsAttached) { %>
<script src="jquery.js"></script>
<% } else { %>
<script src="jquery.min.js"></script>
<% } %>
Я могу легко выполнить код при отладке, иначе я хочу, чтобы скрипты были минимизированы. Обязательно укажите следующий импорт:
<%@ Import Namespace="System.Diagnostics" %>
Кроме того, приятно использовать расширение Visual Studio для веб-сайтов Essentials для связывания/минимизации ваших файлов javascript, чтобы на ваши сценарии был только один запрос на сервер.
Как насчет использования Literal, а затем с помощью #if DEBUG в вашем коде для ввода html для вашего текстового поля в литерал? Также есть прямые блоки кода в ASP.NET, но я не знаю, имеют ли они дело с операторами #if; они, похоже, зарезервированы для компилятора С#.
Было бы достаточно просто бросить свой собственный. Вы можете пропустить некоторые из более компиляционных функций компиляции, но у вас наверняка есть возможность добавлять разметку на основе какого-либо глобального параметра.