请找到我正在尝试处理的场景:
我有一个 aspx 页面,其内容是通过动态加载各种用户控件来加载的。这些用户控件中的每一个都有自己的控件集,例如文本框、复选框列表或复选框。
单击“保存”按钮时,我想从复选框列表中捕获文本框中和复选框中的数据。
我能够使用以下代码成功地从这些控件中收集数据:
UserControl ctl1 = placeholder.FindControl("user_control_1") as UserControl;
if (ctl1 != null)
{
RadTextBox txtName = ctl1 .FindControl("txtFirstName") as RadTextBox;
if (txtName != null)
{
// Perform required CRUD
}
}
这种方法运行良好,直到我有新的需求。为了满足新的需求,我不得不改变逻辑以从 jQuery 发出 AJAX 请求,如下所示:
$.ajax({
type: "POST",
url: window.location.href,
data: {
data1: data
},
success: function (result) { //success
},
failure: function (result) {
//failure
}
}).done(function (o) {
//Error free
});
通过这种请求,我无法访问 .cs 上的文本框数据(或复选框列表的选中项)。对 txtFirstName.Text 的任何调用都将返回为空。
UserControl ctl1 = placeholder.FindControl("user_control_1") as UserControl;
if (ctl1 != null)
{
RadTextBox txtName = ctl1 .FindControl("txtFirstName") as RadTextBox;
if (txtName != null)
{
// Works well till this point.
// txtName.Text returns empty value, inspite of having data in it
}
}
谁能提供有关我如何实现这一目标的指示?
编辑:由于在单击“保存”按钮时会生成一个新的 AJAX 请求,因此会再次加载所有用户控件,这会导致最终用户输入的所有数据丢失。在发出 AJAX 请求之前,我可以通过哪些方式捕获所有最终用户输入的数据?也许,在 jQuery 中为文本框和复选框列表创建一个 JSON,然后将其传递给“数据”?