将ASP.NET与ASP混合使用

时间:2011-07-05 12:19:41

标签: asp.net asp-classic

这可能是一个疯狂的问题(我对ASP.NET有些新手)。但是有可能将ASP.NET代码与经典ASP混合使用,例如嵌入在ASP.NET中在经典ASP页面中创建的表单?

3 个答案:

答案 0 :(得分:7)

不,你不能*

asp pages 是在服务器端实际运行独立脚本的基本简单页面,服务器返回结果。每一页都是独一无二的。

asp.net pages 是一个连接在一起的完整程序,因为它们在一个池下运行,在一个目录中将它们一起编译在一起,包含许多子目录,具有特殊目录和其他选项。运行页面的池处理一些常见数据,会话状态以及许多其他人认为。

所以你可以为你的网站设置一个完整的asp.net设置,首先让它运行,然后你可以使用一些asp页面做一些额外的工作,直到你把它们全部转移到asp.net

所以这两个人没有任何亲戚,所以在简单的回答中你不能把任何东西从一个嵌入到另一个

在asp和asp.net之间共享数据的方法

  • 您只能使用iframe技巧 将一页加载到另一页,但是 他们仍然不同,我不喜欢这个主意。
  • 您使用一些ajax技巧来获取和发送数据。也没有那么酷的主意。
  • 你可以使用 也是一个共享数据的通用数据库。
  • 您可以使用相同的Cookie进行分享 数据。
  • 您不能拥有相同的会话数据(除了使用groat.com等会话的自定义库)。
  • 您可以共享文件。

*除非你的代码是如此简单,如

<% IF Len(SomeString) < 3 then %>
Ok something here
<% end if %>

在这种情况下,代码在两个页面上都很简单,但是它们不是asp.net中嵌入的asp,是完全渲染一页的两个。

The #include Directive在两者上都有效,但在asp.net上不会像在asp上那样编译包含的文件。

他们有一些常用的键入代码的方式,但它们完全不同,当你从asp转到asp.net时,你需要开始变薄。

答案 1 :(得分:2)

一般来说,你问题的答案是否定的。

但是,在某些情况下,可能会呈现ASP.net页面的一部分,然后将结果放入ASP页面。

我上周使用AJAX进行了一些实验。

这是你能做的。

假设您有一个ASP.net页面,其中包含您要在ASP页面上呈现的表单。

1)使用表单创建ASP.net页面并将其包装在ASP:Panel中 - 给它一个id:pnlForm 2)在您的ASP.net代码隐藏中,在Page_Load中编写以下代码:pnlForm.RenderControl()

System.IO.StringWriter stringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
pnlReport.RenderControl(htmlWriter);
Response.Write(stringWriter.ToString());

3)将以下代码片段添加到代码隐藏的末尾:

// This snippet is neccessary to get ASP.net to render the report outsisde the page to write to an Excel spreadsheet.
public override void VerifyRenderingInServerForm(Control control)
{
    return;
}

4)在您的经典ASP页面中创建一个空白div - 为其指定ID formDiv

5)在经典的ASP页面上,使用jQuery.ajax获取表单并将其放在经典的ASP页面上:

$.ajax({
 type: "GET",
 url: "myASPdotNetpage.aspx",
 success: function(response) { $('#formDiv').html(response); }
});

你可以想象,这并不是框架的使用方式,但如果你真的需要渲染一些ASP.net并把它放在其他地方(比如在ASP页面上,甚至是电子表格) ),你至少可以捕获HTML。

答案 2 :(得分:-1)

你做不到。主要问题是ASP和ASP.NET在不同的进程中运行。您可以在ASP.NET应用程序中拥有一个独立的ASP页面,但是您无法在它们之间共享任何代码。实质上,您将在同一目录中运行两个应用程序。无法共享存储在一个进程中的任何数据(例如会话数据)。