【问题标题】:Problem with postback on a lightbox form in ASP.NETASP.NET 中灯箱表单的回发问题
【发布时间】:2011-02-17 16:06:03
【问题描述】:

我需要在 ASP.NET 页面的灯箱中显示提交表单。 如果提交表单中存在错误,例如用户名不唯一,则回发然后将 ASP.NET 页面呈现在灯箱之外。 我该如何解决这个问题?

这是包含灯箱的 .aspx 页面的代码 sn-p:

<...>
<p>
    QunatumMotors is located in Detroit. Please use the link below to contact us.</p>
<p>
 <!--START CONTACT FORM OVERLAY-->

        <!-- first overlay. id attribute matches the selector -->
        <a href="**../informational/contactform.aspx"** rel="#overlay" style="text-decoration:none">
        &gt; Click here to contact us
        </a>

        <div class="simple_overlay" id="form_contact">
            <!-- overlayed element -->
            <div class="apple_overlay" id="overlay">
                <!-- the external content is loaded inside this tag -->
                <div class="contentWrap"></div>
            </div>
        </div>
 <!--END CONTACT FORM OVERLAY-->

<p>&nbsp;</p><p>&nbsp;</p>
<...>

contactform.aspx 只是一个标准的 .aspx 页面,其中包含表单字段、字段验证器、显示错误的标签(例如,用户名不是唯一的)和提交按钮。 当在contactform.aspx 上发生回发时(当然)它会呈现在灯箱之外。如何在灯箱内显示 contactform.aspx 的回发? 感谢您的帮助!

【问题讨论】:

    标签: asp.net forms postback lightbox submission


    【解决方案1】:

    灯箱内容不像另一个选项卡或窗口:它成为主机页面的一部分。

    换句话说,它将contactform.aspx 生成的HTML 合并到主机页面的文档对象模型(DOM) 中。激活灯箱会向主机页面添加一个表单,该表单会发布到联系页面:

     <html><body>
         <!-- host page content here -->
         <!-- contact form content -->
         <form action="contactform.aspx">
             <!-- text boxes, buttons, etc. -->
         </form>
     </body></html>
    

    当用户提交时,他们的浏览器会发出一个新请求:一个 POST 到contactform.aspx。该请求返回联系表单的 HTML。

    有几种方法可以解决这个问题:

    • 使用 ajax 异步执行更新。 (您也许甚至可以通过在 contactform.aspx 中使用 UpdatePanel 来做到这一点,但我不再使用它们,而且还没有通过。

    • contactform.aspx 转换为控件(如果您在多个地方使用它)并将其嵌入到主机页面中。

    • 在联系表单的提交处理程序结束时,使用指示页面立即激活灯箱的标志重定向到主机页面。 (这有很多问题,听起来很脆弱......但它是合理的。)

    【讨论】:

    • 我能够按照您在#1 (ajax) 中所说的那样做到这一点:为了让它与 Ajax 和 UpdatePanel 一起工作,我无法再动态加载外部内容。它给了我 ScriptManager 的错误。我解决它的方法是在 contentWrap div 标签之间复制和粘贴外部内容,并将 href 从锚标签中取出。它现在工作正常。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多