我将首先告诉我,我不是ASC / C#开发人员,这是为了做作业。 (我希望有人能理解我想要的东西:D,因为我完全不知道这些条款)
我有Friends.aspx和Friends.aspx.cs
在Friends.aspx中我有类似的东西
<%@ Reference Control="~/FriendBox.ascx" %>
<div class="controlcontainer clearfix friendlist_containeritems" id="divFriends" runat="server"> </div>
在Friends.aspx.cs中我有这个填充divFriends:
foreach (FBUser user in list){
Control control = LoadControl("FriendBox.ascx");
FriendBox myControl = (FriendBox)control;
myControl.user = user;
divFriends.Controls.Add(myControl);
}
在我的页面中有一个表单,divFriends在表单中。我有一个这种形式的按钮。如果我只是按下按钮,我的页面就会被提交,我可以从选中的复选框中检索值。 (每个控件都包含一个复选框)
Everithing工作正常,直到我试图通过Ajax(JQuery)提交页面。 我的问题是,甚至复选框都在页面上(我可以选择它们,选择它们),当我做ajax提交时,我无法访问复选框中的值。 这是我用来从复选框中检索值的代码:
foreach(Control ctrl in divFriends.Controls) {
var friendBox = ctrl as FriendBox;
//i can get here
if (friendBox != null)
{ //i never get here - because friendBox is allways null }
}
当我使用Jquery提交表单时,如何使divFriends中的内容可访问? 提前谢谢。
编辑:这是我使用的javascript
$(document).ready(function () {
$('.big').click(function () {
//.big is my button
$('.big').attr('disabled', true);
var form_form = $(document).find('form');
$.ajax({
type: 'POST',
url: form_form.attr('action'),
data: form_form.serialize(),
dataType: 'json',
success: function (data) {
console.log('success');
},
complete: function (XMLHttpRequest, textStatus) {
$('.big').attr('disabled', false);
}
});
return false;
});
});
答案 0 :(得分:2)
问题似乎是asp.net状态管理问题。你只是添加一次FriendBox(我假设,可能有一个if not page.ispostback类型的thign),而不是每个页面命中。由于FriendBox是动态添加的,因此它不会在回发中存活,因此当您尝试阅读时它不存在。
每次加载页面时都应该添加FriendBox,在加载viewstate之前在Init上添加。在初始化期间添加控件将允许Viewstate跟踪值,并可能解决问题。