0
嗨我有一個網站有一個主菜單,根據用戶的角色填充 這需要在母版頁中有很多菜單處理代碼,事情工作正常 我感興趣要知道,這種做法有任何性能下降 還是有把菜單這樣的一個更好的方法(我不使用默認的asp.net DB和賬戶等),這裏是我的代碼:在主頁面上創建菜單
DAO dao = new DAO();
protected void Page_Load(object sender, EventArgs e)
{ DispMenues(); }
protected void btnLogin_Click(object sender, EventArgs e)
{ /* Login Mechanism */ }
private void DispMenues()
{ // Menu is main menue on the page
Menu.Items.Clear();
MenuItem mnuHome = new MenuItem("  Home  ", "Home");
mnuHome.NavigateUrl = "~/index.aspx";
Menu.Items.Add(mnuHome);
if (Session["urole"] != null)
switch (Session["urole"].ToString())
{
case "admin":
AdmMenu();
break;
case "supervisor":
SupMenu();
break;
case "deo":
DEOMenu();
break;
default:
Response.Redirect("index.aspx");
break;
}
}
#region AllMenues
private void AdmMenu()
{
DataFeeding(); EditData();
Reports();
}
// For other users menu funcions are similar as above
// Actual Menu Functions
private void DataFeeding()
{
// Main menu data feeding
MenuItem mnuMainDataFeed = new MenuItem("  Data Feeding  ", "DataFeeding");
// Add first level menus under Data Feeding main menu
MenuItem mnuMlkProd = new MenuItem("Milk Production", "MilkProduction");
mnuMlkProd.NavigateUrl = "~/mprodentry.aspx";
MenuItem mnuPedigree = new MenuItem("Pedigree", "Pedigree");
mnuPedigree.NavigateUrl = "~/pedigentry.aspx";
MenuItem mnuPedigreeExt = new MenuItem("External Animal", "External Animal");
mnuPedigreeExt.NavigateUrl = "~/pedigextrnlentry.aspx";
MenuItem mnuDisposalData = new MenuItem("Disposal", "Disposal");
mnuDisposalData.NavigateUrl = "~/dispentry.aspx";
mnuMainDataFeed.ChildItems.Add(mnuMlkProd);
mnuMainDataFeed.ChildItems.Add(mnuPedigree);
mnuMainDataFeed.ChildItems.Add(mnuPedigreeExt);
// Add 2nd/3rd level menus under Data Feeding > Feed
MenuItem mnuFeedingData = new MenuItem("Feeding", "Feeding");
MenuItem mnuYoungAnimFeed = new MenuItem("Young Animal", "YoungAnimal");
mnuYoungAnimFeed.NavigateUrl = "~/calfdngentry.aspx";
mnuFeedingData.ChildItems.Add(mnuYoungAnimFeed);
MenuItem mnuLactDryAnim = new MenuItem("Lactating/Dry Animal", "LactDryAnim");
mnuLactDryAnim.NavigateUrl = "~/lctdryentry.aspx";
mnuFeedingData.ChildItems.Add(mnuLactDryAnim);
MenuItem mnuBullsFeed = new MenuItem("Bulls", "Bulls");
mnuBullsFeed.NavigateUrl = "~/bullfdentry.aspx";
mnuFeedingData.ChildItems.Add(mnuBullsFeed);
mnuMainDataFeed.ChildItems.Add(mnuFeedingData);
// Add 2nd/3rd level menus under Data Feeding > Breeding and Reproduction
MenuItem mnuBreedReprod = new MenuItem("Breeding & Reproduction", "BreedReprod");
MenuItem mnuCalvingRecord = new MenuItem("Calving Record", "CalvingRecord");
mnuCalvingRecord.NavigateUrl = "~/calvngentry.aspx";
mnuBreedReprod.ChildItems.Add(mnuCalvingRecord);
MenuItem mnuServiceRecord = new MenuItem("Service Record", "ServiceRecord");
mnuServiceRecord.NavigateUrl = "~/seviceentry.aspx";
mnuBreedReprod.ChildItems.Add(mnuServiceRecord);
MenuItem mnuServicePos = new MenuItem("Service Position", "Service Position");
mnuServicePos.NavigateUrl = "~/servposentry.aspx";
mnuBreedReprod.ChildItems.Add(mnuServicePos);
mnuMainDataFeed.ChildItems.Add(mnuBreedReprod);
// Add 2nd/3rd level menus under Data Feeding > Diseases
MenuItem mnuDiseases = new MenuItem("Diseases", "Diseases");
MenuItem mnuDiseaseData = new MenuItem("Disease Data", "Disease Data");
mnuDiseaseData.NavigateUrl = "~/disentry.aspx";
mnuDiseases.ChildItems.Add(mnuDiseaseData);
MenuItem mnuTreatData = new MenuItem("Treatment Data", "Treatment Data");
mnuTreatData.NavigateUrl = "~/treatmntentry.aspx";
mnuDiseases.ChildItems.Add(mnuTreatData);
mnuMainDataFeed.ChildItems.Add(mnuDiseases);
// Add 2nd/3rd level menus under Data Feeding > Inventory
MenuItem mnuInventory = new MenuItem("Inventory", "Inventory");
MenuItem mnuStock = new MenuItem("Stock", "Stock");
mnuStock.NavigateUrl = "~/inventstckentry.aspx";
mnuInventory.ChildItems.Add(mnuStock);
MenuItem mnuDeadStock = new MenuItem("Dead Stock", "DeadStock");
mnuDeadStock.NavigateUrl = "~/deadstckentry.aspx";
mnuInventory.ChildItems.Add(mnuDeadStock);
mnuMainDataFeed.ChildItems.Add(mnuInventory);
// Add 2nd/3rd level menus under Data Feeding > Land
MenuItem mnuLand = new MenuItem("Land", "Land");
MenuItem mnuLandRecord = new MenuItem("Land Record", "LandRecord");
mnuLandRecord.NavigateUrl = "~/landrcrdentry.aspx";
mnuLand.ChildItems.Add(mnuLandRecord);
MenuItem mnuCultivatatedLand = new MenuItem("Cultivated", "Cultivated");
mnuCultivatatedLand.NavigateUrl = "~/landcultvtdentry.aspx";
mnuLand.ChildItems.Add(mnuCultivatatedLand);
MenuItem mnuCultivationYears = new MenuItem("Cultivation Years", "CultivationYears");
mnuCultivationYears.NavigateUrl = "~/cultyrsentry.aspx";
mnuLand.ChildItems.Add(mnuCultivationYears);
mnuMainDataFeed.ChildItems.Add(mnuLand);
MenuItem mnuMilkCons = new MenuItem("Milk Consumption", "MilkConsumption");
mnuMilkCons.NavigateUrl = "~/milkconsmpentry.aspx";
mnuMainDataFeed.ChildItems.Add(mnuMilkCons);
// Add last main menu under Feed data menu
mnuMainDataFeed.ChildItems.Add(mnuDisposalData);
// Add feeding data main menu to menu bar
Menu.Items.Add(mnuMainDataFeed);
}
private void EditData()
{
// Main menu Edit Data
MenuItem mnuMainEditData = new MenuItem("  Edit Data  ", "EditData");
// Add first level menus under Data Feeding main menu
MenuItem mnuEdtMlkProd = new MenuItem("Milk Production", "MilkProduction");
mnuEdtMlkProd.NavigateUrl = "~/editmprod.aspx";
MenuItem mnuEdtPedigree = new MenuItem("Pedigree", "Pedigree");
mnuEdtPedigree.NavigateUrl = "~/editpedigdata.aspx";
mnuMainEditData.ChildItems.Add(mnuEdtMlkProd);
mnuMainEditData.ChildItems.Add(mnuEdtPedigree);
// Add 2nd/3rd level menus under Data Feeding > Feed
MenuItem mnuEdtFeedingData = new MenuItem("Feeding", "Feeding");
MenuItem mnuEdtYoungAnimFeed = new MenuItem("Young Animal", "YoungAnimal");
mnuEdtYoungAnimFeed.NavigateUrl = "~/editclfedng.aspx";
mnuEdtFeedingData.ChildItems.Add(mnuEdtYoungAnimFeed);
MenuItem mnuEdtLactDryAnim = new MenuItem("Lactating/Dry Animal", "LactDryAnim");
mnuEdtLactDryAnim.NavigateUrl = "~/editdrylact.aspx";
mnuEdtFeedingData.ChildItems.Add(mnuEdtLactDryAnim);
MenuItem mnuEdtBullsFeed = new MenuItem("Bulls", "Bulls");
mnuEdtBullsFeed.NavigateUrl = "~/editbulsfd.aspx";
mnuEdtFeedingData.ChildItems.Add(mnuEdtBullsFeed);
mnuMainEditData.ChildItems.Add(mnuEdtFeedingData);
// Add 2nd/3rd level menus under Data Feeding > Breeding and Reproduction
MenuItem mnuEdtBreedReprod = new MenuItem("Breeding & Reproduction", "BreedReprod");
MenuItem mnuEdtCalvingRecord = new MenuItem("Calving Record", "CalvingRecord");
mnuEdtCalvingRecord.NavigateUrl = "~/editcvngrcrd.aspx";
mnuEdtBreedReprod.ChildItems.Add(mnuEdtCalvingRecord);
MenuItem mnuEdtServiceRecord = new MenuItem("Service Record", "ServiceRecord");
mnuEdtServiceRecord.NavigateUrl = "~/editsrvcrcrd.aspx";
mnuEdtBreedReprod.ChildItems.Add(mnuEdtServiceRecord);
MenuItem mnuEdtServicePos = new MenuItem("Service Position", "Service Position");
mnuEdtServicePos.NavigateUrl = "~/editservpos.aspx";
mnuEdtBreedReprod.ChildItems.Add(mnuEdtServicePos);
mnuMainEditData.ChildItems.Add(mnuEdtBreedReprod);
// Add 2nd/3rd level menus under Edit Data > Feeding > Diseases
MenuItem mnuEdtDiseases = new MenuItem("Diseases", "Diseases");
MenuItem mnuEdtDiseaseData = new MenuItem("Disease Data", "Disease Data");
mnuEdtDiseaseData.NavigateUrl = "~/editdis.aspx";
mnuEdtDiseases.ChildItems.Add(mnuEdtDiseaseData);
MenuItem mnuEdtTreatData = new MenuItem("Treatment Data", "Treatment Data");
mnuEdtTreatData.NavigateUrl = "~/edittrtmnt.aspx";
mnuEdtDiseases.ChildItems.Add(mnuEdtTreatData);
mnuMainEditData.ChildItems.Add(mnuEdtDiseases);
// Add 2nd/3rd level menus under Edit Data > Inventory
MenuItem mnuEdtStock = new MenuItem("Inventory", "Inventory");
MenuItem mnuEdtOfficeStock = new MenuItem("Stock", "Stock");
mnuEdtOfficeStock.NavigateUrl = "~/editinvntstck.aspx";
mnuEdtStock.ChildItems.Add(mnuEdtOfficeStock);
MenuItem mnuDeadStock = new MenuItem("Dead Stock", "DeadStock");
mnuDeadStock.NavigateUrl = "~/editdeadstck.aspx";
mnuEdtStock.ChildItems.Add(mnuDeadStock);
mnuMainEditData.ChildItems.Add(mnuEdtStock);
// Add 2nd/3rd level menus under Data Feeding > Land
MenuItem mnuEdtLand = new MenuItem("Land", "Land");
MenuItem mnuEdtLandRecord = new MenuItem("Land Record", "LandRecord");
mnuEdtLandRecord.NavigateUrl = "~/editlandrcrd.aspx";
mnuEdtLand.ChildItems.Add(mnuEdtLandRecord);
MenuItem mnuEdtCultand = new MenuItem("Cultivated", "Cultivated");
mnuEdtCultand.NavigateUrl = "~/editlandcultvtd.aspx";
mnuEdtLand.ChildItems.Add(mnuEdtCultand);
mnuMainEditData.ChildItems.Add(mnuEdtLand);
// Add menu under Edit Data > Disposal
MenuItem mnuEdtDispData = new MenuItem("Disposal", "Disposal");
mnuEdtDispData.NavigateUrl = "~/editdisp.aspx";
mnuMainEditData.ChildItems.Add(mnuEdtDispData);
// Add edit data main menu to menu bar
Menu.Items.Add(mnuMainEditData);
}
private void Reports()
{
MenuItem mnuReportsMain = new MenuItem("  View Report  ", "ViewReport");
mnuReportsMain.NavigateUrl = "~/reportoptions.aspx";
// Add View Reports main menu
Menu.Items.Add(mnuReportsMain);
}
#endregion
感謝其實我不使用數據綁定的事件,不需要任何站點地圖,請告訴我,如果使用站點地圖會使事情有效? – user3184772
肯定會使SiteMap更清晰,因爲您不必以編程方式創建所有常見項目(除了那些與用戶級別有關的項目外) –