滚滚长江东流水,黄河入海不复返

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
ASP.NET 2.0 为我们提供了许多新的特性:MasterPage, Themes, WebPart, MemberShip, Navigation等等,本文将带领大家体验一下其中的WebPart。欢迎正在研究ASP.NET 2.0的读者共同探讨。(本文示例基于VS2005 Beta 2 完成)

正文:

打开Visual Studio 2005建立一个新的Web站点,我们会发现工具栏中多了一组新的控件--WebParts。通过他,我们能够快速地实现基于门户的应用。

费话少说,先看个例子:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server">
    </asp:WebPartManager>
  <table>
    <tr>
      <td>
        <asp:WebPartZone ID="WebPartZone1" runat="server">
          <ZoneTemplate>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
          </ZoneTemplate>
        </asp:WebPartZone>
      </td>
      <td>
        <asp:WebPartZone ID="WebPartZone2" runat="server">
          <ZoneTemplate>
            <asp:TextBox ID="TextBox1" runat="server"/>
          </ZoneTemplate>
        </asp:WebPartZone>
      </td>
    </tr>
  </table>
</form>
</body>
</html>

我们发现这里边有两个新的控件WebPartManager和WebPartZone。事实上,WebPartManager在页面上并不会有什么特殊的显示,它用来控制页面中所有的WebPart的行为。而所有的WebPart则出现在WebPartZone里边。当然,所有的Web控件都可以出现在WebPartZone里。

这段东西运行出来大概是这个样子:

看起来好像没什么新鲜的,但是这些在WebPartZone里的普通Button和TextBox就具有了通过拖拽改变位置的能力。如图:

实现这个功能只需要加入几行代码:

protected void Button1_Click( object sender, EventArgs e)
{
  WebPartManager1.DisplayMode = WebPartManager .DesignDisplayMode;
}

这样,只要点击Button我们就可以通过鼠标拖拽改变页面布局了。
当然要想让这段代码正常工作,还需要在Web.config里写一些额外的配置。

<? xml version = " 1.0 " ?>
< configuration xmlns = " http://schemas.microsoft.com/.NetConfiguration/v2.0 " >
  < connectionStrings >
    < add name = " AppConnectionString " connectionString = " Server=localhost;Integrated Security=True;Database=aspnetdb " />
  </ connectionStrings >
  < system.web >
    < webParts >
      < personalization defaultProvider = " AspNetSqlProvider " >
        < providers >
          < add connectionStringName = " AppConnectionString " applicationName = " / " name = " AspNetSqlProvider " type = " System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider " />
        </ providers >
      </ personalization >
    </ webParts >
    < authentication mode = " Windows " />
    < compilation debug = " true " />
  </ system.web >
</ configuration >

这段配置并不难懂,大概意思是说把 WebPart 的个人设置信息存在 aspnetdb 数据库中,采用 Windows 身份验证。那个 aspnetdb 数据库可以通过运行“ aspnet_regsql.exe ”生成,如果采用 Forms 身份验证,则在调整位置之前需要登录。

posted on 2006-11-28 13:25  Steveson  阅读(367)  评论(0)    收藏  举报