关于webcontrol和pagelet的一点看法

web

昨天看了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;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;
    using System.Web.SessionState;
    using System.Web.Security;
    using Portal;
namespace Portal.Web
{
    /// <summary>
    ///    Summary description for Login.
    /// </summary>
    [DefaultProperty("Text"),
        ShowInToolbox(true),
        ToolboxData("<{0}:Login runat=server></{0}:Login>")]
    public class Login : Control, INamingContainer
    {
        private string text;
        protected TextBox txtUserName;
        protected TextBox txtPassword;
        protected Label    lblUserName;
        protected Label    lblPassword;
        protected RequiredFieldValidator RVUserName;
        protected RequiredFieldValidator RVPassword;
        protected LinkButton btnLogin;
        protected LinkButton btnRegister;
        protected Label ErrMsg;
        protected CheckBox RememberCheckbox;

        [Bindable(true),
            Category("Appearance"),
            DefaultValue(""),
            Persistable(PersistableSupport.Declarative)]
        public string Text
        {
            get
            {
                return text;
            }

            set
            {
                text = value;
            }
        }

        /// <summary>
        ///    Render this control to the output parameter specified.
        /// </summary>
        /// <param name="output"> The HTML writer to write out to </param>
        protected override void CreateChildControls()
        {
            this.Controls.Add(new LiteralControl("<Table>"));
            this.Controls.Add(new LiteralControl("<Tr>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            lblUserName = new Label();
            lblUserName.Text = "用户名";
            this.Controls.Add(lblUserName);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            txtUserName = new TextBox();
            txtUserName.Text = "";
            this.Controls.Add(txtUserName);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            RVUserName = new RequiredFieldValidator();
            RVUserName.ControlToValidate = "txtUserName";
            RVUserName.ErrorMessage = "用户名不能为空!";
            RVUserName.ForeColor = System.Drawing.Color.Red;
            this.Controls.Add(RVUserName);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("</Tr>"));
            this.Controls.Add(new LiteralControl("<Tr>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            lblPassword = new Label();
            lblPassword.Text = "密码";
            this.Controls.Add(lblPassword);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            txtPassword = new TextBox();
            txtPassword.TextMode = System.Web.UI.WebControls.TextBoxMode.Password;
            txtPassword.Text = "";
            this.Controls.Add(txtPassword);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            RVPassword = new RequiredFieldValidator();
            RVPassword.ControlToValidate = "txtPassword";
            RVPassword.ErrorMessage = "密码不能为空!!";
            RVPassword.ForeColor = System.Drawing.Color.Red;
            this.Controls.Add(RVUserName);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("</Tr>"));
            this.Controls.Add(new LiteralControl("<Tr colspan=3>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            RememberCheckbox = new CheckBox();
            this.Controls.Add(RememberCheckbox);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("</Tr>"));
            this.Controls.Add(new LiteralControl("<Tr colspan=3>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            btnLogin = new LinkButton();
            btnLogin.Text = "登录";
            btnLogin.Click += new EventHandler(this.btnLogin_Click);
            this.Controls.Add(btnLogin);
            this.Controls.Add(new LiteralControl("  "));
            btnRegister = new LinkButton();
            btnRegister.Text = "注册";
            btnRegister.Click += new EventHandler(this.btnRegister_Click);
            this.Controls.Add(btnLogin);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("</Tr>"));
            this.Controls.Add(new LiteralControl("<Tr colspan=3>"));
            this.Controls.Add(new LiteralControl("<Td>"));
            ErrMsg = new Label();
            ErrMsg.ID = "ErrMsg";
            this.Controls.Add(ErrMsg);
            this.Controls.Add(new LiteralControl("</Td>"));
            this.Controls.Add(new LiteralControl("</Tr>"));
            this.Controls.Add(new LiteralControl("</Table>"));
        }

        private void btnLogin_Click(Object sender, EventArgs e)
        {
            UsersDB accountSystem = new UsersDB();
            String userId = accountSystem.Login(txtUserName.Text, txtPassword.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
            Page.Response.Redirect("default.aspx");
            }
            else {
            ErrMsg.Text = "<" + "br" + "><" + "br" + ">登录失败!<" + "br" + "><" + "br>";
            }
        }

        private void btnRegister_Click(Object sender, EventArgs e)
        {
            Page.Response.Redirect("register.aspx");
        }
    }
}

时间: 2024-09-17 04:17:43

关于webcontrol和pagelet的一点看法的相关文章

对会计软件中凭证输入模块的一点看法

对会计软件中凭证输入模块的一点看法                                                       武汉华中师大信管系   谢刚 摘要: 凭证的制作和处理是会计工作中最为重要的一环,特别是对会计电算化来说,就显得更重要了,应用软件来实现传统的会计过程,凭证是其他一切处理的基础.没有了凭证就没有会计软件后面的一切.而就凭证这块来说,最为基础也最为重要的当属凭证的输入.而凭证的输入的第一步就是确定此凭证的凭证编号,在会计软件中应该尽量的避免由人工来获取凭证

关于js的回调函数的一点看法

原文:关于js的回调函数的一点看法       算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做native App  和Web App是主流,也就是说现在各种基于浏览器的web app框架也会越来越火爆了,做js的也越来越有前途.我也决定从后端开发渐渐向前端开发和手机端开发靠拢,废话不说了,我们来切入正题"js的回调函数"相关的东西.     

关于百度联盟广告与网站内容匹配的一点看法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 百度联盟的站长用户估计都会有一种感觉,那就是百度联盟下面的广告与网站内容的匹配性特别差,最明显的例子就是,不管是什么类型的网站,百度联盟都可能给出妇科或者男性医院的广告.个人感受最真切的是自己的一个大学生的社区,当时挂上了百度联盟的广告,8630.html">有时候竟然出现当地的一个公墓的广告,这真是令人既咋舌又气恼.最近又从

天天新报:对张艺谋拍新片提一点看法

2008年北京奥运会的开闭幕式的成功,使张艺谋的名声享誉全球,在开幕式上, "中国立场,国际表达"的文化语言成功地塑造了中国的形象,用文化软实力征服了西方观众. 奥运会成功后,张艺谋的新片也成为国人的期盼.这是因为张艺谋是第五代导演的领军人物.上世纪80年代末,一部<红高粱>在世界级电影节获得了大奖,后来佳作不断,除了文艺片,在与好莱坞的商业片的对抗中,也拍出了<英雄>(电影版.美剧版).<十面埋伏>.<满城尽带黄金甲>等一批具有票房影响

谈谈关于网站跳出率的一点看法

摘要: 跳出率是指在某个时间段内,用户进入一个网站只浏览了一页即离开网站的访问次数占总访问次数的比例.在各大搜索引擎的统计工具里面,已经有了跳出率这项数据,说明跳出率的高 跳出率是指在某个时间段内,用户进入一个网站只浏览了一页即离开网站的访问次数占总访问次数的比例.在各大搜索引擎的统计工具里面,已经有了跳出率这项数据,说明跳出率的高低对于网站有着重要的意义,那么笔者就谈谈关于跳出率一点看法. 一.跳出率意义 虽然外链因素加入搜索引擎排名算法使得早起靠关键词堆积的作弊手段无处遁形,但如今靠购买链接

谈谈新站GOOGLE高价关键字的一点看法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 谈谈新站来流量的一点看法 我这里说的不是一般的站,我觉得现在大部分人做GOOGLE,都进入了一个误区,很多人把高价GOOGLE内容放在自己的站上,觉得这样就会有高价的广告,但是其实不是这样的,GOOGLE的广告单价定位于你的整个网站,如果你的站定位比较低的话,那么你就算放最高单价的广告,最后也会发现自己的单价并没有想象中的高,或者说是直接会被

对新人SEO人脉积累的一点看法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 人脉即人际关系.人际网络.体现人的人缘.社会关系.根据辞典里的说法,人脉的解释为"经由人际关系而形成的人际脉络",经常用于政治或商业的领域,但其实不论做什么行业,都会使用人脉.seo行业也不例外,在seo业内如果能够广积人脉,广结人缘,那么对你的seo事业是会极大帮助的. 那么新人在刚接触seo的过程中应该如何结交发展自己

咱也谈谈打工皇帝唐骏一点看法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 关于打工皇帝唐骏学历门事件,这段时间闹的沸沸扬扬,网上各种各样的说法都有,不管别人怎么说,我谈谈自己的看法. 21世界什么最可怕,没学历可怕吗?没技术可怕吗?这些在我看来都不可怕,可怕的是没有能力.唐骏为什么被誉为打工皇帝,为什么能在国内企业得以重用,主要是因为他的能力. 说个真实的情况,今年三月份,我在新的公司遇到了一个高学历的同事,什么学

对这次百度影音被告事件的一点看法,希望各位捧个场!

中介交易 SEO诊断 淘宝客 云主机 技术大厅 这次百度影音突然的倒下也是让我措手不及,当我还准备用百度影音看<倾城雪>(一步杜淳演的2011年电视剧,但是因为没有任何视频网站购买其版权的,所以我只能用百度影音看.)突然显示"立即下载安装视频插件(最新版)",我一看就茫然了,我不是已经安装最新版的百度影音了吗?怎么还提示我没安装?然后我把百度影音又安装了一遍结果还是不行,于是我就到贴吧看看情况才得知百度影音因为被其他视频网站联合告倒了已经关闭了P2P服务器,所以各大盗版视频