我是新來的Asp.net,我目前正試圖將一個html頁面轉換爲一個asp.net網站。導航可以很好的與CSS結合使用,並使用無序列表來填充。創建一個從數據庫中提取的導航列表視圖
<ul class="menu" id="responsive">
<li><a href="General.aspx" runat="server" id="currentGeneral"><i class="home"></i> Overview</a></li>
<li><a href="Calendarized.aspx" runat="server" id="currentCalendarized" ><i class="calendar"></i> Calendar</a></li>
</ul>
現在我正在轉移到asp.net,並根據誰登錄,導航會改變。
在我的Site.Master創建
<asp:ListView ID="ListViewMenu" runat="server">
<LayoutTemplate>
<ul class="menu" id="responsive" runat="server">
<asp:PlaceHolder ID="menuContainer" runat="server" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li><a href="<%#Eval ("href") %>" runat="server" id="<%#Eval ("id") %>"><i class="<%#Eval ("class") %>"></i><%#Eval ("text") %></a></li>
</ItemTemplate>
</asp:ListView>
然後我創建了一個存儲過程,將拉我需要根據用戶該表。
ID href id class text
1 general.aspx currentGeneral home overview
然後在Site.Master.cs頁面我創建了一個類來填充上page_PreRender
void PopulateMenu()
{
DataAccess da = new DataAccess();
da.AddParameter("ID", ID, DataAccess.SQLDataType.SQLInteger, 4);
SiteMenu = da.runSPDataSet("Portal_MenuCreate");
ListViewMenu.DataSource = SiteMenu;
ListViewMenu.DataBind();
}
菜單我想這會工作,但即時得到以下
Parser Error: The server tag is not well formed.
<li><a href="<%#Eval ("href") %>" runat="server" id="<%#Eval ("id") %>"><i class="<%#Eval ("class") %>"></i><%#Eval ("text") %></a></li>
任何人都知道我做錯了什麼,也許這不是最好的辦法嗎?感謝您的任何見解。
編輯--- 原因ID-currentGeneral和RUNAT「服務器」,是因爲與模板,我需要將ID設置爲當前如果當前頁面(改變標籤顏色)
switch (pageName)
{
case "General.aspx":
currentGeneral.Attributes["class"] = "active";
break;
case "Calendarized.aspx":
currentCalendarized.Attributes["class"] = "active";
break;
ID不會像普通控件的ID一樣工作,因爲它在ItemTemplate中,所以+1跳過它。 – Graham 2013-04-11 20:22:18
好的,那麼我將不得不改變我如何使用ID。我編輯我的文章,但id-currentGeneral和runat「服務器」的原因是因爲如果模板的當前頁面(改變標籤顏色),我需要將ID設置爲當前。 – Zach 2013-04-11 20:26:46
好吧,我明白這個改變。謝謝你澄清。我確實收到了一個新的錯誤。項目佔位符必須在ListView'ListViewMenu'上指定。通過將控件的ID屬性設置爲「itemPlaceholder」來指定項目佔位符。項目佔位符控件還必須指定runat =「server」。對於我的ListViewMenu.Databind(); – Zach 2013-04-11 20:32:13