2010-06-18 66 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" %> 

您可能需要更改的属性是一个字符串,并做了转换到枚举。但是,否则你的代码可以保持不变,并且不必控制。

相关问题