我必须使用jQuery load()调用将现有的,简单的asp.net Web表单应用程序(包括回发等)集成到另一个外部站点中。该应用程序旨在通过iframe集成。如果没有重写应用程序,我怀疑这是可能的。
该应用程序是一个基本调查问卷,可以在最后引导用户提出产品建议。
有没有人有任何指示我如何解决这个问题?我想我可能不得不用Web服务和动态调用RenderUserControls重写应用程序,我还需要访问调用load()的页面并编写额外的jQuery方法来处理用户输入...我可能会有删除所有asp.net的回发调用并重写用户输入的处理?
答案 0 :(得分:1)
首先,您应该注意load()
函数与所有ajax一样,只能在同一个域上运行。因此,如果“外部网站”在另一个域上,则ajax是错误的选择。
听起来确实很麻烦,具体取决于页面的复杂程度。回发可以在许多地方发生 - 图像点击,组合选择等。此外,还有隐藏的字段需要担心,如视图状态和事件处理程序 - 两个页面上的名称相同。如果外部网站没有状态和回发,您将会有更轻松的时间。
如果页面相对简单,则可以这样做。根据我的经验,表单在其他表单中效果不佳,因此您必须删除其中一个表单(可能是加载页面的表单),或者将它们一个接一个地放置。正如您所提到的,您将不得不重写回发,您需要serialize数据。您可以更改此字符串以适合原始页面上的名称(如果您更改了视图状态的名称等,则更容易在序列化字符串上更改它而不是弄乱ID),将其发布到原始页面,然后重新加载。
就个人而言,尽管我喜欢jQuery,并且这个项目听起来很有意思(而且确实如此),我可能会选择服务器端解决方案。创建用户控件(可能使用ajax本身)或使用Web服务或更好的通用处理程序公开页面功能听起来要容易得多。