这可能是一个疯狂的问题(我对ASP.NET有些新手)。但是有可能将ASP.NET代码与经典ASP混合使用,例如嵌入在ASP.NET中在经典ASP页面中创建的表单?
答案 0 :(得分:7)
asp pages 是在服务器端实际运行独立脚本的基本简单页面,服务器返回结果。每一页都是独一无二的。
asp.net pages 是一个连接在一起的完整程序,因为它们在一个池下运行,在一个目录中将它们一起编译在一起,包含许多子目录,具有特殊目录和其他选项。运行页面的池处理一些常见数据,会话状态以及许多其他人认为。
所以你可以为你的网站设置一个完整的asp.net设置,首先让它运行,然后你可以使用一些asp页面做一些额外的工作,直到你把它们全部转移到asp.net
所以这两个人没有任何亲戚,所以在简单的回答中你不能把任何东西从一个嵌入到另一个。
<% 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页面,但是您无法在它们之间共享任何代码。实质上,您将在同一目录中运行两个应用程序。无法共享存储在一个进程中的任何数据(例如会话数据)。