Download

Bài thực hành lập trình thiết kế web bằng ASP.NET nâng cao – Bài 7-2

Trong bài thực hành thiết kế web này bạn sẽ thực hiện các yêu cầu dưới đây

-       Tạo và sử dụng một Custom Web Server Control.

  1. Tạo một ứng dụng Web và đặt tên là Lab7_2
  2. Thêm thư mục App_Code vào dự án
  3. Bấm chuột phait vào thư mục App_Code và thêm mới một Class.
  4. Đặt tên file là MyCustomControl.cs
  5. Nhập đoạn mã để tạo control như sau

using System;

using System.ComponentModel;

using System.Drawing;

using System.Security.Permissions;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

namespace Samples.AspNet.CS.Controls

{

    [

    AspNetHostingPermission(SecurityAction.Demand,

        Level = AspNetHostingPermissionLevel.Minimal),

    AspNetHostingPermission(SecurityAction.InheritanceDemand,

        Level = AspNetHostingPermissionLevel.Minimal),

    DefaultEvent("Submit"),

    DefaultProperty("ButtonText"),

    ToolboxData("<{0}:Register runat=\"server\"> </{0}:Register>"),

    ]

    public class Register : CompositeControl

    {

        private Button submitButton;

        private TextBox nameTextBox;

        private Label nameLabel;

        private TextBox emailTextBox;

        private Label emailLabel;

        private RequiredFieldValidator emailValidator;

        private RequiredFieldValidator nameValidator;

 

        private static readonly object EventSubmitKey =

            new object();

 

        // The following properties are delegated to

        // child controls.

        [

        Bindable(true),

        Category("Appearance"),

        DefaultValue(""),

        Description("The text to display on the button.")

        ]

        public string ButtonText

        {

            get

            {

                EnsureChildControls();

                return submitButton.Text;

            }

            set

            {

                EnsureChildControls();

                submitButton.Text = value;

            }

        }

 

        [

        Bindable(true),

        Category("Default"),

        DefaultValue(""),

        Description("The user name.")

        ]

        public string Name

        {

            get

            {

                EnsureChildControls();

                return nameTextBox.Text;

            }

            set

            {

                EnsureChildControls();

                nameTextBox.Text = value;

            }

        }

 

        [

        Bindable(true),

        Category("Appearance"),

        DefaultValue(""),

        Description(

            "Error message for the name validator.")

        ]

        public string NameErrorMessage

        {

            get

            {

                EnsureChildControls();

                return nameValidator.ErrorMessage;

            }

            set

            {

                EnsureChildControls();

                nameValidator.ErrorMessage = value;

                nameValidator.ToolTip = value;

            }

        }

 

        [

        Bindable(true),

        Category("Appearance"),

        DefaultValue(""),

        Description("The text for the name label.")

        ]

        public string NameLabelText

        {

            get

            {

                EnsureChildControls();

                return nameLabel.Text;

            }

            set

            {

                EnsureChildControls();

                nameLabel.Text = value;

            }

        }

 

        [

        Bindable(true),

        Category("Default"),

        DefaultValue(""),

        Description("The e-mail address.")

        ]

        public string Email

        {

            get

            {

                EnsureChildControls();

                return emailTextBox.Text;

            }

            set

            {

                EnsureChildControls();

                emailTextBox.Text = value;

            }

        }

 

        [

        Bindable(true),

        Category("Appearance"),

        DefaultValue(""),

        Description(

            "Error message for the e-mail validator.")

        ]

        public string EmailErrorMessage

        {

            get

            {

                EnsureChildControls();

                return emailValidator.ErrorMessage;

            }

            set

            {

                EnsureChildControls();

                emailValidator.ErrorMessage = value;

                emailValidator.ToolTip = value;

            }

        }

 

        [

        Bindable(true),

        Category("Appearance"),

        DefaultValue(""),

        Description("The text for the e-mail label.")

        ]

        public string EmailLabelText

        {

            get

            {

                EnsureChildControls();

                return emailLabel.Text;

            }

            set

            {

                EnsureChildControls();

                emailLabel.Text = value;

 

            }

        }

 

        // The Submit event.

        [

        Category("Action"),

        Description("Raised when the user clicks the button.")

        ]

        public event EventHandler Submit

        {

            add

            {

                Events.AddHandler(EventSubmitKey, value);

            }

            remove

            {

                Events.RemoveHandler(EventSubmitKey, value);

            }

        }

 

        // The method that raises the Submit event.

        protected virtual void OnSubmit(EventArgs e)

        {

            EventHandler SubmitHandler =

                (EventHandler)Events[EventSubmitKey];

            if (SubmitHandler != null)

            {

                SubmitHandler(this, e);

            }

        }

 

        // Handles the Click event of the Button and raises

        // the Submit event.

        private void _button_Click(object source, EventArgs e)

        {

            OnSubmit(EventArgs.Empty);

        }

 

        protected override void RecreateChildControls()

        {

            EnsureChildControls();

        }

 

 

        protected override void CreateChildControls()

        {

            Controls.Clear();

 

            nameLabel = new Label();

 

            nameTextBox = new TextBox();

            nameTextBox.ID = "nameTextBox";

 

            nameValidator = new RequiredFieldValidator();

            nameValidator.ID = "validator1";

            nameValidator.ControlToValidate = nameTextBox.ID;

            nameValidator.Text = "Failed validation.";

            nameValidator.Display = ValidatorDisplay.Static;

 

            emailLabel = new Label();

 

            emailTextBox = new TextBox();

            emailTextBox.ID = "emailTextBox";

 

            emailValidator = new RequiredFieldValidator();

            emailValidator.ID = "validator2";

            emailValidator.ControlToValidate =

                emailTextBox.ID;

            emailValidator.Text = "Failed validation.";

            emailValidator.Display = ValidatorDisplay.Static;

 

            submitButton = new Button();

            submitButton.Text = "Submit";

            submitButton.ID = "button1";

            submitButton.Click

                += new EventHandler(_button_Click);

 

            this.Controls.Add(nameLabel);

            this.Controls.Add(nameTextBox);

            this.Controls.Add(nameValidator);

            this.Controls.Add(emailLabel);

            this.Controls.Add(emailTextBox);

            this.Controls.Add(emailValidator);

            this.Controls.Add(submitButton);

        }

 

 

        protected override void Render(HtmlTextWriter writer)

        {

            AddAttributesToRender(writer);

 

            writer.AddAttribute(

                HtmlTextWriterAttribute.Cellpadding,

                "1", false);

            writer.RenderBeginTag(HtmlTextWriterTag.Table);

 

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            nameLabel.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            nameTextBox.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            nameValidator.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderEndTag();

 

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            emailLabel.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            emailTextBox.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            emailValidator.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderEndTag();

 

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            writer.AddAttribute(

                HtmlTextWriterAttribute.Colspan,

                "2", false);

            writer.AddAttribute(

                HtmlTextWriterAttribute.Align,

                "right", false);

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            submitButton.RenderControl(writer);

            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.Write("&nbsp;");

            writer.RenderEndTag();

            writer.RenderEndTag();

 

            writer.RenderEndTag();

        }

    }

}

  1. Xem kỹ nội dung mã lệnh và đưa ra nhận xet hoặc bổ sung thêm mã nếu muốn
  2. Bấm chuột phải lên dự án và chọn Build Web Site.
  3. Mở file Default.aspx ở chế độ HTML Code
  4. Bên dưới dòng chỉ thị, đăng ký sử dụng control như sau :

  1. Bên trong thẻ div hãy khai báo sử dụng control như sau:

 

  1. Chuyển trang về chế độ thiết kế web.
  2. Nhận xét giao diện.
  3. Chạy và thử control.
  4. Đưa ra nhận xét.
  5. Tương tự bạn có thể tạo các control khác bạn muốn.

Bạn hãy download tài liệu miễn phí bằng cách bấm nút Download trên menu bên phải.


Chúc bạn thành công!


ESVN công ty thiết kế webDịch vụ SEO - Đăng ký tên miền

Thiet ke web mien phiHoc thiet ke web

Nơi hội tụ giải pháp
Công ty  Cổ phần Eastern Sun Việt Nam