环境是这样的,一个MasterPage 如MP2(子)嵌套另一个MasterPage 如MP1(父)。一个UserControl 如MyUc,这个UserControl有一个Web控件,如TextBox1它初始状态为 Visible="false" ,它是拉在MP1的MasterPage上。 现在是要在MP2的MasterPage的page_Load控制UserControl内的TextBox显示与否。

这样的做法,就是所有使用MP1 MasterPage的网页对用户控件的TextBox是不可见,而使用MP2 MasterPage的网页对用户控件的TextBox是可见。

Insus.NET实现这个问题,也花上不少时间,虽然以前实现很多相似的,但都是有page内,而非是在MasterPage去操作。下面是实现过程:

写一个Interface(接口) ,设置用户控件内的TextBox是否显示,是让MyUc用户控件实作这个接口。

IVisible

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for IVisible
/// </summary>
namespace Insus.NET
{
    public interface IVisible
    {
        void SetVisible(bool show);
    }
}

MyUc用户控件实作上面接口:

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public partial class MyUc : System.Web.UI.UserControl,IVisible
{      
    protected void Page_Load(object sender, EventArgs e)
    {
        
    }

public void SetVisible(bool show)
    {
        this.TextBox1.Visible = show;
    }
}

接下来,再写一个接口,接口写了一个bool的属性,设法让实作这个接口的物件实作这个属性。:

ICtrlDisplay

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for ICtrlDisplay
/// </summary>
namespace Insus.NET
{
    public interface ICtrlDisplay
    {
        bool ShowControl { set; }
    }
}

因为MyUc UserControl 拉入MP1 MasterPage内。因此上面的接口ICtrlDisplay为之准备。

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public partial class MP1 : System.Web.UI.MasterPage,ICtrlDisplay
{       
    protected void Page_Load(object sender, EventArgs e)
    {
     
    }

public bool ShowControl
    {
        set

{
            ((IVisible)this.MyUc1).SetVisible(value);           
        }
    }
}

准备好上面过程,现在我们就可以以MP2的MasterPage的Page_Load事件中,控制到MyUc内的TextBox显示与否。

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public partial class SubDirectory_MP2 : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((ICtrlDisplay)this.Master).ShowControl = true; ;
    }
}

看看演示:

演示源程序:

http://download.cnblogs.com/insus/ASPDOTNET/mstpCtrlUc.rar

转载于:https://www.cnblogs.com/insus/archive/2012/02/22/2362830.html

在子MasterPage设置UserControl内的Web控件属性相关推荐

  1. 站点某些网页想显示母版页内的用户控件,某些网页不想显示,怎样实现

    "我有一个站点,这个站点使用了masterpage,还两个用户控件(ascx),是拉至masterpage内的,一个是作为网页首(Header.ascx),另一个作为网页脚(Foot.asc ...

  2. 自定义服务器控件(扩展现有 Web 控件)

    很多情况下,你并不需要从头开始创建一个新控件.有些功能也许在 ASP.NET 的 Web 控件的基本集合中已经存在了.所有这些控件都是普通类,你可以组合它们(使用其他类的实例来创建一个新类)或者继承它 ...

  3. 探讨ASP.NET2.0中的Web控件改进技术

    全面探讨ASP.NET 2.0中的Web控件改进技术之概述(一) ASP.NET 2.0并没有抛弃1.1版本中的任何现有控件,而是增加了一组新的控件;同时还引入了若干新的控件开发技术.本系列文章将对这 ...

  4. 探讨ASP.NET 2.0中的Web控件改进技术(3)

    当你最开始在Visual Studio 2005中使用Windows表单控件或是ASP.NET Web控件时,你首先会注意到,在许多控件右上角出现一个箭头形状的小玩意儿(见图2中的示例).点击这个箭头 ...

  5. 探讨ASP.NET2.0的Web控件改进之概述

    作者: 朱先忠编译 一. 引言 到目前为止,你可能已经了解了大量的ASP.NET 2.0新特征-母版页面,主题,提供者,等等--所有这样内容都相当精彩:但是,你是否了解到有关定制Web控件开发方面的重 ...

  6. Html5table控件,Table Web 控件、TableRow Web 控件及TableCell Web 控件

    Table Web 控件的用法和传统的HTML 的Table 元素差异很大,为了将网页设计对象导向,Table内的列和字段也都跟着对象化了.前面我们已经提过HTML 控件的HtmlTable.Html ...

  7. Ajax 1.0 中使用web控件调用后台方法的用法.

    今天在做页面文本框审核的时候发现个Ajax 1.0 中使用web控件调用后台方法的一个不爽的地方. 把该调用方法发上来供大家参考. 首先我们创建一个MasterPage.master文件. 在页面上放 ...

  8. 使用 TreeView IE Web 控件

    使用 TreeView IE Web 控件 摘要:了解 TreeView Web 控件,并学习如何在 ASP.NET Web 应用程序中使用 TreeView Web 控件.除了标准的 ASP.NET ...

  9. Asp.net 实现验证码功能的Web控件

          Asp.net的设计方式和设计理念和其他的如Asp,Jsp,Php,Perl 等都不一样,几乎是完全的面向对象设计!代码的复用就是其 中差异较大的特点之一,Asp.net除了可以用Incl ...

  10. [UWP]实现一个轻量级的应用内消息通知控件

    [UWP]实现一个轻量级的应用内消息通知控件 原文:[UWP]实现一个轻量级的应用内消息通知控件 在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDi ...

最新文章

  1. python个人项目-个人项目 python实现
  2. C++ 异常处理Demo - win32 版
  3. python使用函数的目的_python之函数基本使用
  4. java 简单跳台阶和变态跳台阶
  5. Linux shell控制台改变显示前缀
  6. netflix测试能不能看_Netflix监管者测试–引入知事,准官员
  7. 数据产品-数据可视化工具Excel之数据透视表
  8. linux中网络编程1
  9. 【codevs2455】繁忙的都市
  10. 使用手机访问 Office 文档
  11. 145分计算机考研408复习复盘
  12. BOB靶机渗透实战-----攻略(大神勿喷)
  13. 如何重启Windows资源管理器
  14. AI绘图之基于文本/图片制图
  15. ubuntu中修改只读文件
  16. 拓扑容差如何修改_如何在CAD中通过设置容差参数对多段线进行自动修复重构
  17. visual studio装哪些_全球有哪些院校的平面设计好?
  18. 给我两小时,我能写很长长长长长长的APP测试用例!
  19. 海量工业数据如何应用?能源企业率先做了这些尝试
  20. excel隐藏的选项卡和命令栏怎么找回?

热门文章

  1. 作为开发你必须知道的WebSocket详解
  2. MySQL 字段操作命令
  3. 45. 圆圈中最后剩下的数字
  4. 37. 两个链表的第一个公共节点(C++版本)
  5. 对象数组题目 Student类
  6. php裁剪圆形,imagemagick裁剪圆形
  7. python3中def的用法-python3中的def函数语法错误
  8. ubuntu 串口调试工具推荐_Qt开源作品3-串口调试助手
  9. Node.js:使用blueimp-md5进行MD5加密
  10. 语义分割模型架构演进与相关论文阅读