从简单模式窗口将值从 asp.net 复选框或文本框传递到服务器时遇到问题

Posted

技术标签:

【中文标题】从简单模式窗口将值从 asp.net 复选框或文本框传递到服务器时遇到问题【英文标题】:Trouble with passing a value from asp.net checkbox or textbox to server from simplemodal window 【发布时间】:2012-03-08 07:17:23 【问题描述】:

大家好,我遇到了一个特殊的问题。在测试 aspx(网络表单)中,我创建了以下内容。如果单击第一个复选框,则两个复选框和一些 jQuery 隐藏或显示第二个复选框。然后我添加了一个按钮,允许我在页面中呈现每个复选框的值,以确保它们为空。 ASP

<head runat="server">
    <script type="text/javascript" src="js/jquery-1.7.js"></script>
    <script type="text/javascript">
        $(function () 
            $('#cb2').hide();

            $('#cb1').click(function () 

                if ($('#cb1').is(":checked")) 
                    $('#cb2').show('fast');
                
                else 
                    $('#cb2').hide();
                    $('#cb2').removeAttr('checked');
                
            );
    );
</script>

<form id="form1" runat="server">
<asp:ScriptManager ID="scriptManger1" runat="server"></asp:ScriptManager>
<div id="cbHolder">
<asp:CheckBox Text="checkbox 1" ID="cb1" runat="server" />
<asp:CheckBox Text="checkbox 2" ID="cb2" runat="server" />
<asp:Button ID="checkBtn" runat="server" Text="get value" OnClick="checkBtn_Click" />
<br />
<asp:Label ID="lbl_Values" runat="server" />
</div>
</form>

CodeBehind aspx.cs

protected void checkBtn_Click(object sender, EventArgs e)
        
            lbl_Values.Text = cb1.Checked.ToString() + cb2.Checked.ToString();
        

一切正常

但是,我现在已将相同的内容添加到我的项目中,并且内容现在位于 SimpleModal 窗口中,而不是表单中。

aspx

 <div id="save-modal-content">
                <asp:Label ID="ssHeader" runat="server" Text="<%$ Resources:InformResources, SaveSearch_lbl %>" />
                <br />
                <div class="ssContainer">
                    <div class="ssLabel">
                        <asp:Label Text="<%$ Resources:InformResources, Name_lbl %>" runat="server" /></div>
                    <div>
                        <asp:TextBox CssClass="ssTextBox" ID="txt_ssname" runat="server" /></div>
                </div>
                <br />
                <div class="ssContainer">
                    <div class="ssLabel">
                        <asp:Label Text="<%$ Resources:InformResources, DescFull_lbl %>" runat="server" /></div>
                    <div>
                        <asp:TextBox CssClass="ssTextBox" ID="txt_ssDescription" runat="server" /></div>
                </div>
                <br />
                <div class="ssContainer">
                    <div class="ssLabel">
                        <asp:Label Text="<%$ Resources:InformResources, Query_lbl %>" runat="server" /></div>
                    <div>
                        <asp:TextBox CssClass="ssQueryBox" ID="txt_ssQueryText" runat="server" Rows="6" TextMode="MultiLine" /></div>
                </div>
                <hr class="invisiblehr" />
                <div id="cb1" class="cbHolder">
                    <asp:CheckBox ID="cb_Notifiy" OnCheckedChanged="cb_click" runat="server" Text="I wish to receive notificaions on this search" />
                </div>
                <br />
                <div id="cb2" class="cbHolder">
                    <asp:CheckBox ID="cb_Email" runat="server" Text="I wish to receive notifications via email" />
                </div>
                <hr class="invisiblehr" />
                <div class="saveButtonContainer">
                    <asp:LinkButton ID="ssSaveButton" CssClass="advButtons" Text="Save" OnClick="ssSaveButton_Click"
                        runat="server" />
                    <a href="#" id="ssCancelButton" class="advButtons">Cancel</a>
                </div>
            </div>

js文件

$(function () 

        $('#cb_Notifiy').click(function () 

            if ($('#cb_Notifiy').is(":checked")) 
                $('#cb2').show('fast');
            
            else 
                $('#cb2').hide();
                $('#cb_Email').removeAttr('checked');
            
        );

还有后面的代码

public void ssSaveButton_Click(object sender, EventArgs e)
        

           txt_ssname.Text = cb_Notifiy.Checked.ToString() + cb_Email.Checked.ToString();
           string foo = txt_ssname.Text.ToString();
        

调用简单模式窗口的代码

//SimpleModal 保存对话框 $(函数() $('#btnSave').click(function (e)

    var searchtrm = $('#tbsearchterm').val();
    if (searchtrm == "Enter Search Term" || $.trim(searchtrm) === "") 

        $('#alert-modal-content').modal( overlayClose: false, close: false, containerId: 'alert-container' );
        $('<b>Whoops!</b><br/><br/><span>Before you can save your search you need to enter a search term or query.</span>').appendTo('#alertTerm');

    
    else 
        $('#txt_ssQueryText').val(searchtrm);
        $('#save-modal-content').modal( overlayClose: false, close: false, containerId: 'saveSearch-container' );
    
);

);

除了几个标签改变代码是相对相同的。但是,在项目中,只要单击保存按钮,就会调用该方法,但所有值(复选框、文本框)都为空。

谁能帮我弄清楚为什么它在一个项目中有效,而在另一个项目中无效。

提前致谢

【问题讨论】:

【参考方案1】:

发现我的问题here from a previous SO post的答案

简而言之,开箱即用的简单模式将内容附加到文档的正文中。这在表单标签之外,这就是找不到元素的原因。简单模式提供了一个属性调用 appendTo,asp.net 使用 appendTo: 'form'。添加此标记将允许对后面的代码进行属性和调用。

谢谢

【讨论】:

以上是关于从简单模式窗口将值从 asp.net 复选框或文本框传递到服务器时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将行值从 iframe 弹出窗口传递到父页面文本框

将值从后面的代码传递给 Jquery 函数

将值从引导模式传递到触发它的按钮?

从asp.net mvc的部分视图中的文本框中获取值

将值从一个组件传递到另一个组件

如何更新主表当前行的输入类型文本中的值从模态窗口表中获取值