"我有一个站点,这个站点使用了masterpage,还两个用户控件(ascx),是拉至masterpage内的,一个是作为网页首(Header.ascx),另一个作为网页脚(Foot.ascx),现在的问题是怎样控制foot.ascx这个用户控件,一些网页需要显示这个用户控件,一些网页不想显示。“

用友在昨晚使用Skype问及Insus.NET,需要寻求解决方案。
Insus.NET在第一时间,让网友参考这篇:http://www.cnblogs.com/insus/archive/2012/02/22/2362830.html

”你好,我情形跟你提供的参考不一样呀,你例子中的是两个母版页 ,而我的只有一个母版页,是在网页来控制用户控件显示与否,控制的是整个用户控件,而不是用户控件内的某一个控件“

好吧,Insus.NET改一改,也许会让你能更明白一些。
解决它,需要理解母版页,用户控件以及网页三者关系,后两者都是在母版页内工作,一般情况之下,各自实现各自的功能。如今网页与用户控件之间需要交互(你的问题)。
因此在设计时,我们只会对用户控件添加一个属性,显示或不显示,那个网页或是前参考例子中那一个子母版来控件,它不管,功能与职责分开。
另外,由于用户控件是拉到母版页,而不是拉至网页的,我们有一个问题需要考虑的,在网页怎样找到母版本的用户控件,并设置用户控件的属性(赋值)。只要我们写一个接口,是返回用户控件,然后母版页来实现这个接口,这样的话,就可以在任何一个网页中,把母版转换为这个接口(用户控件)。

OK,我们开始写程序,首先创建接口,一个接口是让用户控件实现的,显示与不显示:

IVisiblable

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;/// <summary>
/// Summary description for IVisiblable
/// </summary>
namespace Insus.NET
{public interface IVisiblable{void UserControlVisibled(bool visible);}
}

下面是创建一个用户控件(foot.ascx),拉了一张图片,地球一小时,来自http://zh.wikipedia.org/wiki/%E5%9C%B0%E7%90%83%E4%B8%80%E5%B0%8F%E6%97%B6

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 Foot : System.Web.UI.UserControl,IVisiblable
{protected void Page_Load(object sender, EventArgs e){}public void UserControlVisibled(bool visible){this.Visible = visible;}
}

这样的做法,就是为实现接口的方法,不管是母版页还是网页,甚至是另外的用户控件,均可以传布尔值来控件foot.asx控件显示与否。完成到此,还是要写另外一个接口,是为了网页为找到用户控件的功能:

IUserControlContainer

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;/// <summary>
/// Summary description for IUserControlContainer
/// </summary>
namespace Insus.NET
{public interface IUserControlContainer{bool ShowUserControl { set; }}
}

余下步骤,完成其它母版页与网页。创建一个母版页,并把foot.ascx拉至母版页内:

View Code

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="InsusMasterPage.master.cs" Inherits="InsusMasterPage" %><%@ Register Src="Foot.ascx" TagName="Foot" TagPrefix="uc1" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body><form id="form1" runat="server"><div><!-- 这里放Header.ascx--><asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"><!-- 这里是内容页容器--></asp:ContentPlaceHolder><!--下面这个是Foot.ascx--><uc1:Foot ID="Foot1" runat="server" /></div></form>
</body>
</html>

母版实现IUserControlContainer接口:

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 InsusMasterPage : System.Web.UI.MasterPage,IUserControlContainer
{protected void Page_Load(object sender, EventArgs e){}public bool ShowUserControl{set{ IVisiblable fASCX = (IVisiblable )this.Foot1;fASCX.UserControlVisibled(value);}}
}

这样的话,在网页中,就可以为用户控件设置或为赋值了,如果想显示,就传入真值,反之不想显示,就传入假值:
假如,A.aspx 想显示:

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 A : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){IUserControlContainer masterpage = (IUserControlContainer)this.Master;masterpage.ShowUserControl = true; //显示
    }
}

假如,B.aspx不想显示用户控件:

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 B : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){IUserControlContainer masterpage = (IUserControlContainer)this.Master;masterpage.ShowUserControl = false; //不显示
    }
}

简单演示:

演示源程序:
http://download.cnblogs.com/insus/ASPDOTNET/aspx_isshow_ascx.rar

站点某些网页想显示母版页内的用户控件,某些网页不想显示,怎样实现相关推荐

  1. 07.用户控件弹窗提示后页面显示不正常;

    问题:满意度把问题的生成搞成用户控件questions.ascx之后,弹出"第#题还没完成"的提示后,满意不满意等选项的字就变小了; F12观察到,大小正常的字html{font- ...

  2. 使用反射把用户控件(ASCX)传至网页(ASPX)

    用户控件向网页传递值,方法非常之多,此博文尝试使用反射来实现.在站点中,建一个网页以及一个用户控件. 网页切换至设计模式,拉用户控件至网页上. Default.aspx: View Code < ...

  3. 当用户控件有异动时,网页某部位作出相应变化

    很多情况之下,使用用户控件ASCX时,是因为不止一个网页有相同的一个功能.因此让把这部分抽出来,放置于一个用户控件.然后在网页需要用户控件,拉进去即可,但是Insus.NET不单单只是呈现,而是想做更 ...

  4. Android的WebView控件载入网页显示速度慢的究极解决方案

    Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...

  5. qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示

    ---恢复内容开始--- qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示 打个比方,我现在写个小例子,这个小例子是这样的,整个界面分为俩个部分,分为上半部分和下半部分, ...

  6. android的webview控件载入网页显示速度慢的究极解决方案,【转】Android的WebView控件载入网页显示速度慢的究极解决方案...

    Android客户端中混搭HTML页面,会出现虽然HTML内容载入完成,标题也正常显示,但是整个网页需要等到近秒(甚至更多)时间才会显示出来.研究了很久,搜遍了国外很多网站,也看过PhoneGap的代 ...

  7. 网页内嵌lodop控件,部分电脑一直提示未安装

    网页内嵌lodop控件,部分电脑一直提示未安装 工作中遇到部分电脑的内嵌网页用不了lodop控件 lodop 提供了 C-Lodop 支持ppapi的打印方法. 工作中遇到部分电脑的内嵌网页用不了lo ...

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

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

  9. 使用ActiveX控件开发网页常见的问题

    1. 什么是ActiveX 控件? Microsoft® ActiveX™ 控件是由软件提供商开发的可重用的软件组件.使用 ActiveX控件,可以很快地在网址.台式应用程序.以及开发工具中加入特殊的 ...

最新文章

  1. React.js 的 Web 应用场景有哪些
  2. mysql boolean_产品操作MySQL第7篇 – 运算符 – IS NULL
  3. IDEA启动tomcat报错java.util.zip.ZipException: error in opening zip file
  4. Android数据存储之sharedpreferences与Content Provider
  5. matlab工具箱使用dir2cas,MATLAB课程第八章.ppt
  6. 3. 机器学习中为什么需要梯度下降_【干货】机器学习 | 为什么机器能“学习”?——感知器和梯度下降...
  7. python做病毒传播的空间数据_利用4行Python代码监测每一行程序的运行时间和空间消耗...
  8. 20.TCP/IP 详解卷1 --- TCP 的成块数据流
  9. pads9.5在win10中选项字体显示不全问题解决补丁下载(网盘免费下载)
  10. ElasticSearch查询模板
  11. 3D相机成像原理简介
  12. 通过图片url 获取图片file对象
  13. List工具类之List集合去重
  14. 51单片机C语言程序100例
  15. 部分国内外遥感与GIS杂志(小百合)
  16. 圣诞表白html,Pyhton表白代码——浪漫圣诞节
  17. 降低数据库压力的方法
  18. 遇到问题---CDH重启namenode--Command timed-out after 150 seconds--角色正在启动
  19. 电脑运行内存8g够用吗
  20. 统计学中的标准差(SD)和 平均值的标准误差(SEM)的区别

热门文章

  1. 【转】C 编译器优化过程中的 Bug
  2. Spring Data JPA单元测试 Not a managed type
  3. 【转】DontDestroyOnLoad(Unity3D开发之五)
  4. 浏览器标准模式与怪异模式的区别
  5. NYOJ(21),BFS,三个水杯
  6. 【编译打包】twemproxy-0.4.0-2.el7.centos.src.rpm
  7. 管理“我的右上角” : 介绍菜单栏图标软件 Bartender
  8. [AWDwR4] Iteration F4
  9. Kubernetes理论基础
  10. .NET可变性解析(协变和逆变)