[英]ASP.net menu design
I have my menu: 我有我的菜单:
<asp:Panel runat="server" CssClass="menuLink" ID="mnuMyJobs">
<a href="../jobs/index.asp">My Jobs</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuCreateSpec">
<a href="../multipart/index.asp">Create Spec</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuArtworkTemplates">
<img src="images/menuArrowR.png" class="menuArrow" alt="Selected" />
<a href="#">Artwork Templates</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuAllReports">
<a href="../reportingDashboard/index.asp?snavid=1">All Reports</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuBuyerReports">
<a href="../buyerReports/index.asp?snavid=1">My Reports</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuSupplierReports">
<a href="../supplierReports/index.asp?snavid=1">My Reports</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuContractPrices">
<a href="../clientPrices/index.asp">Contract Prices</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuJobDirectory">
<a href="../jobDirectory/index.asp">Job Directory</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuAddressBook">
<a href="../addressBook/index.asp">Address Book</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuMyAccount">
<a href="../account/index.asp">My Account</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuUserManager">
<a href="../manage/userManager.asp">User Manager</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuCampaignManager">
<a href="../campaignManager/indexMenu.asp?snavid=0">Campaign Manager</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuPackingConfig">
<a href="../packingManager/index.asp?snavid=1">Packing Config</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuTemplateManager">
<a href="../templateManager/index.asp?snavid=0">Template Manager</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuStockManager">
<a href="../stockManager/index.asp?snavid=0">Stock Manager</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuHelpCentre">
<strong><a href="../helpCentre/index.asp?snavid=1">Help Centre</a></strong>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuApprovalManager">
<a href="../approvalManager/index.asp?snavid=1">Approval Manager</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuAdmin">
<a href="../admin/search.asp?snavid=1">Admin</a>
</asp:Panel>
<asp:Panel runat="server" CssClass="menuLink" ID="mnuLogout">
<a href="LoginHandler.ashx?userID=-1">Logout</a>
</asp:Panel>
And in my code behind: 在我的代码后面:
// Hide/show menu items
mnuCreateSpec.Visible = loginData.loggedInUser.isBuyer;
mnuBuyerReports.Visible = loginData.loggedInUser.isBuyer;
mnuSupplierReports.Visible = loginData.loggedInUser.isSupplier;
etc
I know this isn't the greatest design ^ but it's got to be backwards compatible with an older system. 我知道这不是最棒的设计^,但必须与旧系统向后兼容。 My question however is, when a menu item is 'selected' the panel should be with the image: 我的问题是,当菜单项被“选中”时,面板应该是图像:
<asp:Panel runat="server" CssClass="menuLink" ID="mnuArtworkTemplates">
<img src="images/menuArrowR.png" class="menuArrow" alt="Selected" />
<a href="#">Artwork Templates</a>
</asp:Panel>
How can I dynamically add that image into the correct panel? 如何将该图像动态添加到正确的面板中? I don't really want a literal control in each panel, or is that my only option? 我真的不想在每个面板中使用文字控件,还是我唯一的选择? This function 'selects' the correct panel, I need to insert the image somehow with this function 这个函数'选择'正确的面板,我需要用这个函数以某种方式插入图像
public void selectMenu(Panel menuToSelect)
{
menuToSelect.CssClass = "menuLink selected";
}
If the image is always going to be the same one you could put it in your markup and have it set to invisible by default: My Jobs 如果图像总是相同,则可以将其放入标记中,并默认将其设置为不可见:我的工作
Then, when your panel is selected make it's pnlSelectedImg
visible. 然后,当您的面板被选中时,使其显示为pnlSelectedImg
。
public void SelectMenu (Panel menuToSelect){
((Image)(menuToSelect.FindControl("pnlSelectedImg")).Visible = true;
}
Something like that? 那样的东西?
another way is to create the image and add it to the panel: 另一种方法是创建图像并将其添加到面板:
mnuArtworkTemplates.Controls.Add(new Image
{
ImageUrl = "images/menuArrowR.png",
CssClass = "menuArrow",
AlternateText = "Selected"
});
Figured it out: 弄清楚了:
// Add the arrow image
Image arrowImage = new Image();
arrowImage.ImageUrl = "images/menuArrowR.png";
arrowImage.CssClass = "menuArrow";
arrowImage.AlternateText = "Selected menu item";
menuToSelect.Controls.Add(arrowImage);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.