新手求助~~谢谢大家。我建立一个母版页,里面有导航栏,是几个linkbutton控件组成。子页面default.aspx里有一个multiView控件,设置了几个VIEW。我想达到的效果是,点母版页上的不同的LinkButton,子页面中显示相应的view,请大家帮助,给个思路就好~

解决方案 »

  1.   

    虽然可以通过子网页的Master属性,并转换为实际类后访问母板页的类,但还是实现不了你的功能,还是改结构吧
      

  2.   

    举个例子,假设master中主要是书籍销售主界面,而aspx则是完成不同店铺的不同的处理细节。首先,设计一个通讯接口,例如:using System;public interface IMyMaster
    {
        string 当前被选中的书籍 { get; set; }
        string[] 所有被选中的书籍 { get; set; }    event Action 有书籍被选中了;
    }然后让你的master page的后台类型使用这个接口,并且在相应的LinkButton的地方触发事件通知,例如:if(this.有书籍被选中了!=null)
       this.有书籍被选中();在你的aspx的代码中,则可以这样捕获事件:void Page_Load(object sender,EventArgs e)
    {
        ((IMyMaster)this.Master).有书籍被选中 += ........
    }这样,aspx就可以得到master page的通知(有书籍被选中),并去了解更多信息(例如是哪个书籍被选中)。
      

  3.   

    依赖倒置设计技术并不等于你要去做什么伤筋动骨的结构重构,而是要将通讯接口独立出来,使得对象的属性(跟事件)与对象的界面实现相分离。例如这个例子中,master page它的接口定义了它给外界暴露什么属性,并且触发什么事件。实际上在开发时,你应该用10分钟先开发出一个master page原型,哪怕仅仅用最简单的控件拼凑起这个原型,然后就可以立刻开发aspx(即master page的客户程序)。然后等你有空闲的时候才重新修改master page的细节,使得它更加好用。再重复一遍,对于组件开发,应该以接口(包含了数据、方法和事件定义,但是根本不在乎具体是如何实现的)为原则,当你在设计相互协同的组件时首先不应该纠缠于某个组件的内部是linkbutton还是menu来实现的,而是依据接口来相互操作。你不需要总是把程序推倒重来。依赖倒置技术是很灵活的,黑的可以变成白的,白的可以变成黑的,只要是让作为提供服务的一方不要依赖自己的客户程序就可以。
      

  4.   

    母版页中支持linkbutton控件吗?