如何在ASP.NET中创建两个具有相同ID的ContentPlaceHolder?

时间:2011-06-13 05:39:07

标签: asp.net asp.net-mvc master-pages

我不想拥有两个母版页,因此我尝试这样做(为了便于阅读,省略了< %%>):

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 =“&lt;%=”X“%&gt;”设置ID不,也不会让我:

Server tags cannot contain <% ... %> constructs.

然后我尝试了&lt;%#Eval(“X”)%&gt;和不:

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块,它不会让两个标签具有相同的ID。

我正在使用MVC和默认的视图引擎。

1 个答案:

答案 0 :(得分:3)

你试过这样的事吗:

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

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

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

if (isAEqualB)
{
    </div>
}