改进后的Hello.cs
using System;
using System.Web.UI;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace BLL
{
public partial class Hello : System.Web.UI.Control
{
/**//*在BLL层右键Add---〉CustomControl会自动产生下面的一个构造器
* 和一个OnPaint方法---〉怀疑和using System.Windows.Forms;有关
*/
//public Hello()
//{
// InitializeComponent();
//}
//protected override void OnPaint(PaintEventArgs pe)
//{
// // TODO: Add custom paint code here
// // Calling the base class OnPaint
// base.OnPaint(pe);
//}
string MyName = "";
public string Name
{
get { return MyName; }
set { MyName = value; }
}
protected override void Render(HtmlTextWriter writer)
{
//base.Render(writer);
writer.Write("<h1>Hello,"+Name+"</h1>");
}
}
}
改进后的aspx(只是<win:hello 多了个属性:Name)using System;
using System.Web.UI;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace BLL
{
public partial class Hello : System.Web.UI.Control
{
/**//*在BLL层右键Add---〉CustomControl会自动产生下面的一个构造器
* 和一个OnPaint方法---〉怀疑和using System.Windows.Forms;有关
*/
//public Hello()
//{
// InitializeComponent();
//}
//protected override void OnPaint(PaintEventArgs pe)
//{
// // TODO: Add custom paint code here
// // Calling the base class OnPaint
// base.OnPaint(pe);
//}
string MyName = "";
public string Name
{
get { return MyName; }
set { MyName = value; }
}
protected override void Render(HtmlTextWriter writer)
{
//base.Render(writer);
writer.Write("<h1>Hello,"+Name+"</h1>");
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="hello.aspx.cs" Inherits="hello" %>
<%@ Register TagPrefix="win" Namespace="BLL" Assembly="HelloControl" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>CustomControl Page</title>
</head>
<body>
<form id="form1" runat="server">
<!--
<%@ Register TagPrefix="win" Namespace="BLL" Assembly="HelloControl" %>
该指令不需要TagName因为对于自定义控件来说:控件的类名就是它的TagName
因为public partial class Hello : System.Web.UI.Control所以控件的类名
Hello就是这里的TagName
而Namespace和Assembly是一定要有的,这里Assembly="HelloControl"是因为:
csc /t:library /out:HelloControl.dll hello.cs
-->
<!-- 这里<win:Hello 控件的行为完全由BLL层中的Hello.cs决定
与本aspx和aspx.cs完全无关
-->
<!-- 如果机器较慢 智能感知可能不会很及时地反应出Name属性来-->
<win:Hello ID="cutomControl1" Name="Jeff" runat="server"></win:Hello>
</form>
</body>
</html>