用Perl来写一个ASP.net的服务器控件!
原文:http://blog.funfly.cn/zhanying/articles/163.html
首先我们来看一个最简单的C#写的服务器ASP.NET服务器控件:
SimpleControl.cs
----------------
using System;
using System.Web.UI;
namespace MSPress.ServerControls
{
public class SimpleControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("I don't do anything useful,<br> " );
writer.Write("but at least I'm a control... ");
}
}
}
然后我们编译这个控件,然后将他复制到bin目录下面,然后我们继续在VS2003当中创建一个Web应用程序,其代码如下:
WebForm1.aspx
---------------
<%@ Register TagPrefix="msp" NameSpace="MSPress.ServerControls" Assembly="MSPress.ServerControls" %>
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication5.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<msp:SimpleControl id="simple1" runat="server" />
</body>
</HTML>
编译并运行,我们就可以看到网页中出现如下输出!
I don't do anything useful,
but at least I'm a control...
好了,你已经懂得如何用C#创建一个ASP.Net的服务器控件了!但这并不是我们最后的目的!我们的目的是利用Perl来书写ASP.Net的服务器控件!为了降低难度我们在这里要写一个同上面那个C#代码完全相同的东西。
但在写程序之前,我们必须拥有相应的开发环境,在这里我建议您下载并安装ActiveState Perl Dev Kit 6.0和ActiveState Visual Perl 1.8.1,以下的程序都是在这个基础上调试通过的!
在刚才建立的那个Web应用程序解决方案中添加一个Visual Perl Managed Perl Dll项目,项目的名称我们就用Perl.Net.ServerContol好了!项目中会自动创建一个.pm文件。我们在其中添加如下代码:
SimpleContol.pm
---------------
package Perl::Net::ServerContol::SimpleContol;
use namespace "System";
use namespace "System.Web.UI";
use strict;
=for interface
[extends: System.Web.UI.Control]
protected override void Render(System.Web.UI.HtmlTextWriter writer);
=cut
sub Render{
my $self=shift;
my $write=shift;
$write->Write("This is a Perl.net SimpleContol!");
}
同时我们对WebForm1.aspx文件进行一些修改:
WebForm1.aspx
---------------
<%@ Register TagPrefix="pl" NameSpace="Perl.Net.ServerContol" Assembly="Perl.Net.ServerContol" %>
<%@ Register TagPrefix="msp" NameSpace="MSPress.ServerControls" Assembly="MSPress.ServerControls" %>
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication5.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<msp:SimpleControl id="simple1" runat="server" />
<pl:simplecontol id="pl1" runat="server" />
</body>
</HTML>
[CCB]1[/CCB][CCB]2[/CCB]