ASP.NET表单字段不从彩色框发布

时间:2011-06-21 11:39:52

标签: c# jquery asp.net colorbox

我有一个显示在jQuery颜色框中的表单。提交表单时,该表单中的字段不会回发到页面。我修改了javascript,将表单字段存储到提交的隐藏字段中,并将那些DO发回。问题是,因为这是一个登录框,我真的不想像这样移动密码。主表单内容位于更新面板中。这是我的母版页的代码:

<form id="myform" runat="server" clientidmode="Static" method="post">
    <asp:ScriptManager ID="ecommerceManager" runat="server" ClientIDMode="Static" EnableViewState="False" EnablePageMethods="True">
        <Scripts>
            <asp:ScriptReference Path="~/js/jquery-1.6.1.min.js" />
            <asp:ScriptReference Path="~/js/jquery.colorbox.min.js" />
            <asp:ScriptReference Path="~/js/eCommerce.js" />
        </Scripts>
    </asp:ScriptManager>

    <div style="width: 940px; margin-left: auto; margin-right: auto;">
        <div align="left">
            TOP OF THE PAGE
            <asp:ContentPlaceHolder ID="bodyContent" runat="server" ClientIDMode="Static">
            </asp:ContentPlaceHolder>
            BOTTOM OF THE PAGE
        </div>
    </div>

    <script type="text/javascript">
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading);
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(loadData);
    </script>
    </form>

以下是我的主要默认页面中使用母版页的一些代码:

<asp:Content ID="mainContent" ContentPlaceHolderID="bodyContent" runat="server">


    <asp:UpdatePanel ID="ecommerceUpdate" runat="server" ClientIDMode="Static">
        <ContentTemplate>

            <asp:Panel ID="pnlEcomMain" runat="server" CssClass="ecom_main" ClientIDMode="Static">
                <asp:HiddenField ID="statusField" runat="server" ClientIDMode="Static" ViewStateMode="Disabled" EnableViewState="False" />
                <asp:HiddenField ID="hdnUsername" runat="server" ClientIDMode="Static" ViewStateMode="Disabled" EnableViewState="False" />


                <div class="add_product">
                    <div class="add_product_menu text_12_bold">
                        <asp:Image ID="imgAddProducts" ImageUrl="~/images/ecom_icon_add_2.gif" CssClass="std_btn" AlternateText="Add Products" runat="server" ClientIDMode="Static" />Add Additional Products:<br /><br />
                        <asp:DropDownList ID="newproduct" runat="server" ClientIDMode="Static" 
                            onchange="addProduct()">
                        </asp:DropDownList>
                    </div>
                </div>
                </asp:Panel>

                <div class="clear"></div>

                <!--- HERE IS THE COLORBOX POPUP CONTENT --->
            <div style="display: none; visibility: hidden;">
                <div id="inline_login">
                    <p><strong>User Login Details Go Here</strong></p>

                    User Name: <asp:TextBox ID="loginName" runat="server" ClientIDMode="Static" EnableViewState="False" ViewStateMode="Disabled" /><br />
                    Password: <asp:TextBox ID="loginPassword" runat="server" TextMode="Password" ClientIDMode="Static" /><br />
                    <input type="button" name="loginBtn" id="loginbtn" value="Login" onclick="javascript:validateLogin()" />



                </div>
            </div>

            </asp:Panel>

            <asp:Label ID="xmlContent" runat="server" />
       </ContentTemplate>
    </asp:UpdatePanel>

</asp:Content>

新产品字段正确发布,但用户名和密码不会在发布之前将其复制到隐藏字段。我猜也许这与更新面板有冲突?我最初试图在更新面板中使用登录控件,但在论坛中读到已知问题。

对此的任何见解都将非常值得赞赏。我正在使用firebug并且可以确认这些字段不在帖子中,这就是为什么ASP没有找到它们。

4 个答案:

答案 0 :(得分:4)

显然,尽管存在于表单内部,但颜色框实际上将内容移动到表单之外。我能够通过将这行代码添加到我的JavaScript提交函数来解决这个问题:

jQuery('#inline_login').appendTo('form'); 

希望它可以帮助别人!

答案 1 :(得分:1)

我从未使用过jQuery colorbox,但是我遇到了类似jQuery UI模式弹出窗口的问题。它正在做的是,当我附加弹出窗口时,它将内容div移到asp.net表单之外,因此控件没有被回发。

答案 2 :(得分:1)

在特定的.NET CMS(DNN)中为我工作的另一个选项是获取Jack的修复并附加到cbox_complete事件。发布以防其他人可能认为这有用。

$(document).bind('cbox_complete', function () {
    $("#colorbox, #cboxOverlay").appendTo('form:first');
});

答案 3 :(得分:0)

与colorbox&amp;有类似的问题形式,这样解决了。我的问题是提交无效,因为字段集被剥离了表单标记;因此,如果您的表单未在彩盒中发布,请尝试此操作,将表单ID作为颜色框内容的href发送

$(document).ready(function () {
        $('#login-trigger').click(function () {
            $.colorbox({
                inline: true,
                href: "#login-form",
                close: "×",
                onOpen: function () { $('#login-content').css({ display: 'block' }); },
                onClosed: function () { $('#login-content').css({ display: 'none' }); }
            });
            return false;
        });