您的位置:首页 > 编程语言 > ASP

用C++/CLI编写ASP.Net的后台代码

2013-08-15 21:10 344 查看
(本文借鉴自http://www.cppblog.com/oomusou/archive/2006/10/22/14002.html,但有许多修改……)

默认情况下,Visual Studio里建立ASP.Net网站的时候只能选择VB或C#作为后台语言。但是,只要是支持.Net的语言都可以开发ASP.Net,只是麻烦一些而已。我个人因为语言习惯而选择了C++/CLI,这篇文章里,我将介绍用C++/CLI开发ASP.Net的各种方式。

首先是新建项目,其实完全可以不用项目的,但是VS的ASPX设计器还是很强大的,所以我们需要它……你也可以直接用DreamWaver之类的东西写ASPX



这里语言可以任选,反正我们也用不到。

然后在设计器里写界面……由于是实例用我就写了这么个简陋的界面:



这还没结束,切换到代码视图,在开头部分将Language=”C#”删除,加上AutoEventWireup="true" Inherits="HelloWorld",HelloWord为C++的Class名称。也要将<script runat="server"></script>部分删除

<%@ Page AutoEventWireup="true" Inherits="HelloWorld" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>HelloWorld</title>
</head>
<body>
<form id="form1" runat="server">
<div>

Using C++ in ASP.NET<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>

</div>
</form>
</body>
</html>


 

给ASP.Net控件加上事件处理函数名,但如果在属性窗口中创建,会自动生成<script runat="server"></script>标记,务必记得删除其中全部内容。

在当前解决方案中新建C++ CLR DLL项目:



然后在cpp文件中编写事件处理程序,只要类名和ASPX中Inherits中指定的名称一致就行。其实可以将类定义写到.h文件里,只在cpp里写函数,这样更符合定义与实现分离的原则。

#using <system.dll>
#using <mscorlib.dll>
#using <system.web.dll>

using namespace System;
using namespace System::Web::UI::WebControls;

public ref class HelloWorld:public System::Web::UI::Page
{
protected:
Button^ Button1;
Label^ Label1;
TextBox^ TextBox1;
public:
void Button1_Click(Object^ sender,EventArgs^ e)
{
this->Label1->Text="Hello,"+TextBox1->Text+"!";
return;
}
};

注意命名空间的引用和类的继承。(其实上面几个#using我也不知道有什么用……但留着总没坏处)

选择Release配置,然后编译项目……别想着调试了,目前我还没发现调试的方法,这是一大弊端。





或者你想使用命令行编译也可以……从开始菜单->MIcrosoft Visual Studio 20XX->Visual Studio Tools->VS20XX x64(x86)本机命令提示,命令行语法如下:

cl /clr HelloWorld.aspx.cpp /link /out:HelloWorld.dll

记住:一定要将工作目录切换到源文件所在目录!因为命令行编译的默认输出位置不是源文件位置,而是当前目录!

好了,最后把ASPX文件扔到IIS目录下,生成的dll文件扔到IIS的bin目录下,就可以测试了!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: