#asp.net #asp.net-mvc #master-pages
#asp.net #asp.net-mvc #мастер-страницы
Вопрос:
Я не хочу иметь две основные страницы, поэтому я пытаюсь сделать это (опустил <% %> для удобства чтения):
if (a == b)
{
<asp:ContentPlaceHolder ID="X" runat="server" />
}
else
{
<div class="c">
<asp:ContentPlaceHolder ID="X" runat="server" />
</div>
}
Но это не позволит мне:
Duplicate ContentPlaceHolder 'X' were found. ContentPlaceHolders require unique IDs.
Итак, я попытался установить идентификаторы с помощью ID=»<%= «X» %>» и нет, мне это тоже не позволяет:
Server tags cannot contain <% ... %> constructs.
Затем я попробовал <%# Eval(«X») %> и нет:
The ID property of a control can only be set using the ID attribute in the tag and a simple value. Example: <asp:Button runat="server" id="Button1" />
Есть ли какой-нибудь способ добиться того, что я пытаюсь сделать? Я думал что-то вроде
echo '<asp:ContentPlaceHolder ID="X" runat="server" />'
Или какой-либо динамический способ добавления тега, потому что, по-видимому, анализатор не может идентифицировать блок if else, который не позволяет двум тегам иметь одинаковый идентификатор.
Я использую MVC с механизмом просмотра по умолчанию.
Ответ №1:
Вы пробовали подобное:
<% var isAEqualB = a == b; %>
if (isAEqualB)
{
<div class="c">
}
<asp:ContentPlaceHolder ID="X" runat="server" />
if (isAEqualB)
{
</div>
}
Комментарии:
1. Отлично. Это один из тех ответов «почему-я-не-додумался-до-этого».