你可以使用,讓你的HTML輸出的控制中繼器或列表視圖或幾乎任何東西......
您還沒有呈現的信息的巨量去,但我懷疑你有至少一些包含文本值和URL的數據。
private void BindMenuData()
{
var menuData = DataLayer.GetMenuStructure();
rptMenu.DataSource = menuData;
rptMenu.DataBind();
}
然後在你的HTML/ASPX,你會碰到這樣的
<asp:Repeater id="rptMenu" runat="Server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<a href='<# Eval("URL")>'><# Eval("LinkText")></a>
</li>
</ItemTempate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
如果再需要的子菜單,你需要在其中嵌套另一箇中繼器的項目模板中,並綁定到它的中繼itemDataBinding/Databound(無法記住哪個)事件。
子菜單導致了一層額外的複雜性,可能很容易下降到意大利麪代碼的混亂,所以需要一些時間來思考!
當然,回退可能總是一種方法,它使用字符串生成器來爲菜單生成HTML並將其吐出到字面上......在我看來,這不是最好的選擇!
是的,你所描述的正是我想到的使用中繼器來顯示我所有的數據結構。我得到的唯一擔憂是,當使用中繼器時,會顯示爲1個菜單或多個菜單 – nanobots 2014-09-03 14:26:03
不確定你的意思? 以上應該只能提供一個UL ..如果這就是你的意思? – D3vy 2014-09-09 08:45:21