【问题标题】:Mixing ASP.NET with ASP将 ASP.NET 与 ASP 混合
【发布时间】:2011-09-28 18:42:11
【问题描述】:

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

【问题讨论】:

    标签: asp.net asp-classic


    【解决方案1】:

    不,你不能*

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

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

    所以你可以为你的网站设置一个完整的 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 中,而是在两个页面上完整呈现一个页面。

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

    它们有一些共同的代码输入方式,但它们完全不同,当你从 asp 迁移到 asp.net 时,你需要开始不同的细化方式

    【讨论】:

      【解决方案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) 在代码隐藏的末尾添加以下代码sn-p:

      // 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。

      【讨论】:

      • 这可能不是 MS 设计要使用的 ASP.net 的方式,但对于将 ASP.net gridview 对象放置在我想放置它们的任何位置,它绝对是无价的。
      • 不知道是否有人还在阅读这篇文章,但您可以使用 ServerXMLHTTP 在服务器端拉取内容,而不是在经典 ASP 页面中使用 ajax
      【解决方案3】:

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

      【讨论】:

      • ASP 和 ASP.net 在不同的进程中运行。他们每个人都有自己的会话,但你说他们不能共享数据是不正确的。在我的环境中,我们通常使用 SQL Server 完成此操作。有一些工具旨在促进这一点:例如参见 GROAT SessionFarm
      • 有点不公平投票否决,他们是正确的“你将无法在他们之间共享任何代码”,因为两者是不同的技术堆栈。我认为在这种情况下,“数据”可能被误解了,任何 Web 应用程序都可以与任何其他 Web 应用程序共享数据,这是 HTTP 如何工作的通用常量(共享服务器数据源、跨域脚本和标准 dtos(XML 和其他格式))。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      相关资源
      最近更新 更多