2010-06-18 106 views
3

我已經在asp.net中創建了一個菜單控件,並將其放入母版頁中。此菜單控件具有屬性ActiveItem,它在修改時會使菜單中的一個或另一個項目顯示爲活動狀態。我可以在ASP.NET中創建自定義指令嗎?

從子頁面控制活動項目我創建了一個控件,它修改由IMenuContainer界面強制執行的主頁面屬性,以更新母版頁中菜單控件的活動項目。

public class MenuActiveItem : Control 
{ 
    public ActiveItemEnum ActiveItem 
    { 
     get 
     { 
      var masterPage = Page.Master as IMenuContainer; 
      if (masterPage == null) 
       return ActiveItemEnum.None; 

      return masterPage.ActiveItem; 
     } 

     set 
     { 
      var masterPage = Page.Master as IMenuContainer; 
      if (masterPage == null) 
       return; 

      masterPage.ActiveItem = value; 
     } 
    } 
} 

一切完美,我很喜歡這個解決辦法,但我在想,如果我知道怎麼樣,我就已經創建了相同的功能,而無需定製控件的自定義指令,因爲它只是更有意義呀。

有人知道該怎麼做嗎?

回答

2

您應該可以將其轉換爲頁面的自定義屬性,您可以在Page指令中設置該屬性。

爲您的網頁創建一個基類,然後改變你的頁面指令是這樣的:

<%@ Page Language="C#" MasterPageFile="~/App.master" 
CodeFileBaseClass="BasePage" ActiveItem="myActiveItem" AutoEventWireup="true" 
CodeFile="Page1.aspx.cs" Inherits="Page1" %> 

您可能需要更改的屬性是一個字符串,並做了轉換到枚舉。但是,否則你的代碼可以保持不變,並且不必控制。

相關問題