首先,我要告诉我我不是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在表单内部。我有这种形式的按钮。如果我只是按一下按钮,则页面将被提交,并且可以从选定的复选框中检索值。 (每个控件都包含一个复选框)
在我尝试通过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;
});
});
javascript之所以有效,是因为我可以提交数据,并且可以接收回来的数据(json),当我查看提交的数据时,我没有divFriends的复选框。 最佳答案
该问题似乎是asp.net状态管理问题。您只添加了FriendBox一次(我假设,如果不是page.ispostback的话,可能就很流行),而不是每次点击时都添加一次。由于FriendBox是动态添加的,因此无法幸免于回发,因此当您尝试阅读它时就不存在。
每次加载页面时,都应在加载viewstate之前的Init上添加FriendBox。在init期间添加控件将允许Viewstate跟踪值,并且可能会解决该问题。
关于c# - Asp.net从控件中检索内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4444211/