日期:2013-10-07  浏览次数:20456 次

昨天看了bigeagle的一些帖子,觉得受益匪浅,但有一点我不是很同意,就是说pagelet是一个过渡性方案,其实在一些简单的控件开发上,pagelet是很方便的。
而且Pagelet有直观明了的特点。Pagelet 可与WebForm一样支持控件拖放。这极大方便了我们的编程。我个人认为简单的无需支持模版的空件完全可以用Pagelet来开发。它与WebControl是同等的。当然如果要做一个商业化的复杂的(比如你想自己做一个类似Datagrid的控件)还是要用WebControl的。这里就两个例子来说明
我们分别用这两种方式开发一个用户登录控件
1._Signin.ascx
<%@ Control Inherits="Portal.PortalModuleControl" %>
<%@ Import Namespace="Portal" %>
<script language="C#" runat="server">

    void LoginBtn_Click(Object sender, ImageClickEventArgs e) {

        // Attempt to Validate User Credentials using UsersDB
        UsersDB accountSystem = new UsersDB();
        String userId = accountSystem.Login(email.Text, password.Text);

        if ((userId != null) && (userId != "")) {

            // Use security system to set the UserID within a client-side Cookie
            CookieAuthentication.SetAuthCookie(userId, RememberCheckbox.Checked);

            // Redirect browser back to originating page
            Response.Redirect("default.aspx");
        }
        else {
            Message.Text = "<" + "br" + "><" + "br" + ">登录失败!<" + "br" + "><" + "br>";
        }
    }

</script>

<hr noshade size="1pt" width="98%">

<span class="SubSubHead" style="height:20">Account Login</span>

<br>

<span class="Normal">Email:</span><br>

<asp:TextBox id="email" columns="9" width="130" cssclass="NormalTextBox" runat="server"/><br>

<span class="Normal">Password:</span><br>

<asp:TextBox id="password" columns="9" width="130" textmode="password" cssclass="NormalTextBox" runat="server"/><br>

<asp:checkbox id="RememberCheckbox" class="Normal" Text="Remember Login" runat=server/>

<table cellspacing=0 cellpadding=4 border=0>

    <tr>
        <td>
            <asp:ImageButton id=SigninBtn ImageUrl="images/signin.gif" OnClick="LoginBtn_Click" runat="server" /><br>
            <a href="register.aspx"><img src=http://www.163design.net/n/a/"images/register.gif" border="0"></a></br>

            <asp:label id="Message" class="NormalRed" runat=server/>
        </td>
    </tr>

</table>

<br>


////
////2.WebControl
///
using System;
    using System.Drawing;
    using System.Web;<