在ASP.NET中运用PlaceHolder控件

原创 2004年08月03日 17:18:00
 Marc Gusmano

在从一个Web页面转换到另一个Web页面时,你的ASP.NET应用程序的用户界面的某些部分常常是保持不变的——如某些“装饰”的部分:页眉处的GIF图片、水平工具条或导航条、左侧的链接、等等。你可以继续用它们,而不必为每个页面重建。

在过去,一个流行的ASP技术就是为一个页面的每个主要部分创建一个include文件,然后建一个整体的HTML表,表的单元包含每个include文件。这种方法是可行的,但是不美观,还容易出错。幸运的是,ASP.NET可以让你用一种更好的方法来解决这个问题,运用一个Visual Studio .NET PlaceHolder Web控件。该控件将其它控件作为一个集合(collection)包含起来。你可以在运行时清除那个collection或添加它;例如,你可以在运行时添加一个Web用户控件(一个模块式的Web页面)。我将讲述如何将PlaceHolder Web控件同Web用户控件结合起来运用,为构建ASP.NET应用程序提供一个方法。

首先在VS.NET中创建一个新的ASP.NET Web应用程序。我在样例代码中用的是C#。创建一个Web窗体,保存的文件带有ASPX扩展名。我称其为我的main.aspx。该页面是你的应用程序中唯一的Web页面,因为你用Web用户控件(ASCX文件)来开发所有的页面“内容”。

在main.aspx页面中创建你选择的站点装饰内容。在你想放置站点丰富内容地方添加一个PlaceHolder控件。然后,将下面的代码添加到你的页面的Page Load事件中:

private void Page_Load(object sender, System.EventArgs e)
 { string p = Request.QueryString.Get("p");
 PlaceHolder1.Controls.Clear(); 
if (p == null) PlaceHolder1.Controls.Add(LoadControl 
("modules/" + "Default" + ".ascx"));
 else { PlaceHolder1.Controls.Add(LoadControl 
("modules/" + p + ".ascx")); } } 

通过该代码,你可以在项目模块文件夹中看到一个包含Web用户控件页面(ASCX)的名字的查询字符串参数p。你不用将所有ASCX文件都放在一个单独的文件夹中,但这么做的确可以进一步隔离应用程序。

一旦你得到那个字符串后,清空PlaceHolder的Controls集合,清除你在先前可能显示的任何ASCX。然后,查看一下代码,看你是否需要加载一个缺省的ASCX。最后,如果p查询字符串是请求的一部分,那么由p查询字符串代表的页面就被加载了。

你不需要费很大的劲构建代码来在你的站点上显示多个Web页面。在你的VS.NET项目中添加一个新的Web用户控件页面。一旦你添加了这个页面,你就可以把它当作你的应用程序中的唯一的页面来设计并编写代码了;你甚至不需要知道它将在main.aspx页面中运行。当然,如果该页面需要与主页面交互,情况并没有这么简单,但在这里我并不打算讲述这个问题。

图1.
图1. 保持你的Web GUIs的恒量元素
设想你需要在VS.NET开发环境中显示一个Account Logon用户控件(见图1)。代码只给开发人员提供与该页面细节相关的UI。没有办法改变整体页面的其它方面。

现在,当你在一个浏览器中运行http://localhost/CSCSdotNET/main.aspx时,首先加载了default.ascx页面,这是由于main.aspx的Page Load事件的缘故。要导航到Login页面,你只需将一个p查询字符串参数添加到请求——在这个例子中,运用URL http://localhost/CSCSdotNET/main.aspx?p=01-AccountLogon。现在显示的就是整个main.aspx页面,以及你在图1中看到的动态加载的01-AccountLogon.ascs Web用户控件。

asp.net控件PlaceHolder简介

PlaceHolder控件是一种容器,用来存放控件。所以可以应用在页面动态添加控件。可以在使用中向PlaceHolder添加任何HTML控件,也可以添加js代码。满足了在特定位置动态添加移除控件的需求...
  • u011458469
  • u011458469
  • 2014-12-07 21:37:56
  • 1638

asp.net使用placeHolder(转载)

我是从asp转向asp。net的,习惯于使用Response.Write,和 这样的方式来输出 微软在asp.net 2.0 中给出的PlaceHolder解决方案,更加符合后台和表现分离的原则; ...
  • linshichen
  • linshichen
  • 2016-04-22 11:18:20
  • 1750

简单控件Panel和PlaceHolder的使用区别

在MSDN中资料如下:PlaceHolder Web 服务器控件使您可以将空容器控件放置到页内,然后在运行时动态添加、移除或依次通过子元素。该控件只呈现其子元素;它不具有自己的基于 HTML 的输出。...
  • lee576
  • lee576
  • 2008-01-20 21:43:00
  • 2936

ASP.NET中运用PlaceHolder控件

1、1、       在加载控件的地方插入一个PlaceHolder: 加载代码: WEbControl wc = new WebControl(HtmlTe...
  • educast
  • educast
  • 2008-09-07 16:58:00
  • 1106

使用PlaceHolder动态加载用户控件,为何aspx页面再次提交后用户控件消失?

用户控件:uc.ascx(内含按钮AscxButton)     页面文件:a.aspx(内含按钮AspxButton)     流程是这样的:     在a.aspx中点击按钮AspxBut...
  • lee576
  • lee576
  • 2008-01-20 21:47:00
  • 3739

占位控件(PlaceHolder)

PlaceHolder该控件作为将其他控件作为一个集合包含起来,用户可以在运行的时候清除这个集合或者添加它.简单来说PlaceHolder控件可以为以编程方式动态添加的控件保留位置.从而将动态添加或删...
  • xzhai2007
  • xzhai2007
  • 2007-05-31 12:33:00
  • 577

分析在ASP.NET中运用PlaceHolder控件

在从一个Web页面转换到另一个Web页面时,你的ASP.NET应用程序的用户界面的某些部分常常是保持不变的——如某些“装饰”的部分:页眉处的GIF图片、水平工具条或导航条、左侧的链接、等等。你可以继续...
  • sven_xu
  • sven_xu
  • 2015-06-02 09:12:47
  • 408

在ASP.NET中运用PlaceHolder控件

在从一个Web页面转换到另一个Web页面时,你的ASP.NET应用程序的用户界面的某些部分常常是保持不变的——如某些“装饰”的部分:页眉处的GIF图片、水平工具条或导航条、左侧的链接、等等。你可以继续...
  • jelink
  • jelink
  • 2006-08-25 11:46:00
  • 874

.net中的placeholder控件

最近留意到有人问,NET中的placeholder控件用来做什么的。其实PLACEHOLDER控件,是用来做动态加载用户自定义控件时,一个占位置作用的控件,比如private void Page_Lo...
  • mdot
  • mdot
  • 2005-01-08 20:55:00
  • 6648

ASP.NET AJAX 学习之一 ScriptManager控件

 主要内容1.控件概述2.一个简单的示例3.客户端脚本模式4.错误处理5.Services属性6.Scripts属性 一.控件概述ScriptManager控件包括在ASP.NET 2.0 AJAX ...
  • minghui227
  • minghui227
  • 2006-10-28 14:54:00
  • 1215
收藏助手
不良信息举报
您举报文章:在ASP.NET中运用PlaceHolder控件
举报原因:
原因补充:

(最多只允许输入30个字)