使用模式弹出窗口在另一个aspx页面中显示aspx页面

如何解决使用模式弹出窗口在另一个aspx页面中显示aspx页面

我有以下代码,用于在模式弹出窗口中打开aspx页面,但问题是,一旦加载模式弹出窗口的宿主页面,它就会重定向到iFrame内部的页面。 / p>

<cc1:ModalPopupExtender ID="mp1" runat="server" PopupControlID="Panl1" TargetControlID="Button1"  
    CancelControlID="Button2" BackgroundCssClass="Background">  
</cc1:ModalPopupExtender>  
<asp:Panel ID="Panl1" runat="server" CssClass="Popup" align="center" Style="display: none">
    <iframe style="width: 350px; height: 300px;" id="irm1" src="PayrollScope.aspx?id=49437" runat="server"></iframe>
    <br />
    <asp:Button ID="Button2" runat="server" Text="Close" />
</asp:Panel>

所以顺序是 MainPage.aspx->单击PopUp->在模式中加载PayrollScope.aspx

但是,一旦我点击MainPage.aspx,它就会重定向到PayrollScope.aspx。我也尝试使用jQuery模态弹出窗口,但同样的问题正在发生。有人可以告诉我为什么要重定向。

谢谢

解决方法

如果您使用jQuery对话框加载其他页面?

好吧,它将显示出来,但是如果页面中的任何代码有回发,那么是的,它将重定向到该页面。(jQuery对话框将整个其他页面直接拉入该div并“合并”添加到当前页面的dom中。因此,您可以显示该页面,并且不会发生重定向。但是,任何服务器端按钮事件代码(按下按钮,甚至说编辑文本框后更新事件(在更改)将导致回发。因此,任何回发将导致页面重定向(毕竟,事件背后的所有代码都会将整个页面和URL发送给IIS。因此,这很大程度上取决于您是否显示该页面,或者是否希望/需要/在作为对话框加载的第二页上具有用户交互。

因此,转储ajax弹出窗口并控制对弹出窗口ID的尊重。 (不要尝试使用jQuery和ajaxtool套件来“尝试”并弹出一个控件/ div,因为它们往往不能很好地发挥作用。

我建议使用jQuery。

这可以工作(但要记住上面的回发问题)。

<body>
<form id="form1" runat="server">
<br />
<asp:Button ID="Button1" runat="server" Text="Show page as dialog" OnClientClick="showpage1();return false"/>

<div id="poppage" runat="server" style="display:none">
</div>

<link href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.min.css" rel="stylesheet" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>

<script>

    function showpage1() {
        var mydiv = $('#poppage');
        mydiv.dialog({
            autoOpen: false,modal: true,title: 'My cool other page',width: '50%',position: { my: 'top',at: 'top+150' }
        });
        mydiv.load('MyOtherPage.aspx');
        // Open the dialog
        mydiv.dialog('open');
      }

因此,上面将加载另一页(到该div),因此,当您单击上面的按钮时,弹出第二页。 (并注意return = false)。如果页面上有任何回发,则所有内容都会使对话框消失。 (这也意味着我们按照上面显示(加载)的第二页。

但是,如果您需要在第二页上进行交互? (必须单击按钮等)。

那么iframe的想法是非常好的主意。

所以,您和以前一样,但是我们现在不使用jQuery.ui“加载”页面,而是仅显示(并因此弹出)带有放置在其中的iframe的div。

因此,div变成了这样:

<div id="poppage" runat="server" style="display:none">
    <iframe src="MyOtherPage.aspx" class="auto-style1"></iframe>
</div>

,js代码变成这样:

    function showpage1() {
        var mydiv = $('#poppage');
        mydiv.dialog({
            autoOpen: false,at: 'top+150' }
        });
        // Open the dialog
        mydiv.dialog('open');
      }

因此,现在上面的内容将仅在div中显示该其他页面,并且由于它是iFrame,因此您可以进行交互-并在该iframe中发帖应该就可以了。

因此,删除ajax面板的内容-试试jQuery.ui。我使用了ajaxtool工具包的东西,但是为了在对话框中显示另一个整页,然后我发现jQuery.ui似乎更好用了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-