65.9K
CodeProject 正在变化。 阅读更多。
Home

使用托管C++的ASP.NET

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2002 年 8 月 20 日

CPOL

2分钟阅读

viewsIcon

147265

downloadIcon

1156

使用托管C++作为ASP.NET网页的代码隐藏文件

Sample Image - HelloWorldMC.gif

引言

我最近在留言板与Chris Maunder讨论了这个主题。Chris得出结论,ASP.NET不支持托管C++,我同意。但是它支持MSIL编译的程序集。

尽管.NET Framework支持许多语言编译器,但ASP.NET开箱即用仅支持解析三种语言:C#、VB.NET和JScript。因此,我们必须绕过ASP.NET解析器才能使用ASP.NET不支持的语言。我们将用来实现此目的的方法称为“代码隐藏”。此方法应该适用于任何支持.NET编译器的语言(例如COBOL)。我将用著名的“Hello World”示例来演示此技术。本文的唯一目标是向您展示如何使用托管C++作为ASP.NET页面的代码隐藏,它不会演示任何复杂的C++编码。

使用托管C++作为ASP.NET代码隐藏

首先,让我们创建一个名为HelloWorldMC.aspx的简单ASP.NET文件。此文件中最重要的部分是Inherits="HelloWorldMC",这将告诉ASP.NET查找程序集(代码隐藏)文件。

<%@ Page AutoEventWireup="false" Inherits="HelloWorldMC" %>
<html>
    <head>
        <title>HelloWorld MC++</title>
    </head>
    <body>
        <form runat=server ID="Form1">
           <asp:Button id="Button1" runat="server" Text="Click Me Please" 
           OnClick="SayHello" Width="172px"></asp:Button>
        </form>
    </body>
</html>

接下来,我们创建托管C++文件作为名为HelloWorldMC.aspx.cpp的代码隐藏文件,我在这里遵循Visual Studio.NET的命名约定。务必使服务器控件的名称在.aspx文件和.cpp(代码隐藏)文件中保持一致。例如,id="Button1"用于.aspx文件,而Button* Button1用于代码隐藏文件,这会将其绑定到<asp:Button id="Button1" runat=server></asp:Button>控件。还要记住,函数SayHello必须是公共的,以便.aspx页面可以访问它。

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

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

public __gc class HelloWorldMC : public System::Web::UI::Page
{
protected:

    Button* Button1;

public:

    void SayHello (Object* sender, EventArgs* e)
    {
        Button1->Text = "Hello MC++ World";	
        return;
    }

};

编译项目

确保HelloWorldMC.aspxHelloWorldMC.aspx.cpp文件位于IIS Web服务器的根目录(即C:\Inetpub\wwwroot)中。现在,如果根目录中不存在子目录bin,请创建它(即C:\Inetpub\wwwroot\bin)。以下命令行语法将编译并创建我们的代码隐藏文件,并将其放置在bin中。确保这是从Web服务器根目录运行的。

cl /clr HelloWorldMC.aspx.cpp /link /dll /out:bin\HelloWorldMC.dll

启动浏览器并浏览文件https:///HelloWorldMC.aspx,ASP.NET 不关心代码隐藏(程序集)是如何创建的,只要它符合.aspx文件中的Inherits="HelloWorldMC",这告诉ASP.NET存在一个名为HelloWorldMC.dll的程序集。请注意,在所有ASP.NET编程中使用代码隐藏技术有很多优点,列举几个:

  1. 执行前编译
  2. 将表示代码与业务逻辑分离

在VS.NET中获得.CPP代码隐藏文件的IntelliSense

我建议获取.cpp文件的IntelliSense的方法是,向当前存在的Web项目添加一个空白的托管C++项目。我尝试首先创建.cpp代码隐藏文件,然后将现有项目添加到我的Web项目中,并且.cpp文件已添加到我的Web项目中,但是IntelliSense无法正常工作。

使用托管C++的ASP.NET - CodeProject - 代码之家
© . All rights reserved.