【问题标题】:I have to integrate an existing asp.net web app into another page by using jQuery's load() method我必须使用 jQuery 的 load() 方法将现有的 asp.net Web 应用程序集成到另一个页面中
【发布时间】:2009-03-17 13:32:55
【问题描述】:

我必须使用 jQuery load() 调用将现有的简单 asp.net 网络表单应用程序(包括回发等)集成到另一个外部站点中。该应用程序旨在通过 iframe 进行集成。我怀疑在不重写应用程序的情况下这是可能的。

该应用程序是一个基本的问卷调查,最终将用户引导至产品建议。

有没有人可以指点我如何解决这个问题?我想我可能不得不用 Web 服务和对 RenderUserControls 的动态调用来重写应用程序,我还需要访问调用 load() 的页面并编写额外的 jQuery 方法来处理用户输入......我可能会有删除所有 asp.net 的回发调用并重写对用户输入的处理?

【问题讨论】:

    标签: asp.net jquery ajax


    【解决方案1】:

    首先你应该注意load() 函数和所有的ajax 一样,只能在同一个域上工作。因此,如果“外部站点”在另一个域上,则 ajax 是错误的选择。

    这听起来确实很辛苦,具体取决于页面的复杂性。回发可能发生在许多地方——图像点击、组合选择等。此外,还有一些隐藏字段需要担心,例如视图状态和事件处理程序——它们在两个页面上具有相同的名称。如果外部网站没有状态和回发,您会更轻松。

    如果页面相对简单,这可能是可以做到的。根据我的经验,表单在其他表单中效果不佳,因此您必须删除其中一个(可能是加载页面的表单),或者将它们一个接一个地放置。正如您所提到的,您必须重写回发,您需要serialize 数据。您可以更改此字符串以适合原始页面上的名称(如果您更改了视图状态的名称等,将其更改回序列化字符串比弄乱 ID 更容易),将其发布到原始页面,然后重新加载。

    就个人而言,尽管我很喜欢 jQuery,而且这个项目听起来很有趣(而且确实如此),但我可能会选择服务器端解决方案。创建用户控件(可能使用 ajax 本身)或使用 Web 服务或更好的通用处理程序公开页面功能听起来要容易得多。

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      相关资源
      最近更新 更多