日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 站点某些网页想显示母版页内的用户控件,某些网页不想显示,怎样实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

"我有一個站點,這個站點使用了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

?

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的站点某些网页想显示母版页内的用户控件,某些网页不想显示,怎样实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。