从简单模式窗口将值从 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 复选框或文本框传递到服务器时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章