2014-01-11 8 views
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("&nbsp&nbspHome&nbsp&nbsp", "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("&nbsp&nbspData Feeding&nbsp&nbsp", "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("&nbsp&nbspEdit Data&nbsp&nbsp", "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("&nbsp&nbspView Report&nbsp&nbsp", "ViewReport"); 
    mnuReportsMain.NavigateUrl = "~/reportoptions.aspx"; 
    // Add View Reports main menu 
    Menu.Items.Add(mnuReportsMain); 
} 

#endregion 

ответ

0

Это отлично.
Если бы я был вами, я бы использовал css вместо «& nbsp» в названии ваших товаров.
Кроме того, вы можете использовать конструктор MenuItem, который принимает ... 5 аргументов (я думаю), включая NavigateUrl.
Или вы можете просто использовать конструктор по умолчанию и инициализировать свойства один за другим.

EDIT: О, еще одна вещь ... это лучше создавать элементы в меню Control DataBound событий и вы должны рассмотреть вопрос об использовании Карта сайта

+0

спасибо на самом деле я не использую DataBound событие и карта сайта не требуется либо , пожалуйста, сообщите мне, если использование файла Sitemap сделает его эффективным? – user3184772

+0

Определенно сделайте вещи более понятными с SiteMap, потому что вам не нужно будет программно создавать все общие элементы (кроме тех, которые отличаются от уровня пользователя) –

Смежные вопросы