Как создать два ContentPlaceHolder с одинаковым идентификатором в ASP.NET? - PullRequest
2 голосов
/ 13 июня 2011

Я не хочу иметь две главные страницы, поэтому я пытаюсь сделать это (оставил <%%> для удобства чтения):

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 Ответ

3 голосов
/ 13 июня 2011

Вы пробовали так:

<% var isAEqualB = a == b; %>

if (isAEqualB)
{
    <div class="c">
}

<asp:ContentPlaceHolder ID="X" runat="server" />

if (isAEqualB)
{
    </div>
}
...