我有一个简单的用户控件,它根据用户ID在几个图像的可见性之间切换。第一次加载页面时,用户ID被正确分配(我正在调试)。但是,页面上还有两个用于过滤用户类型的按钮,它们通过Ajax(不是工具箱,而是普通的Javascript Ajax)执行功能。
当单击其中一个按钮时,用户控件无法获取用户ID,它始终显示为零。哦,顺便说一句,用户控件在一个数据中继器中,所以它发生在每个用户身上。总是。。或者就是这个想法。我还有其他几个类似的页面(没有一个页面使用Ajax),用户控件也没有任何问题。
我的用户控制代码:
公共部分类UCAuthorityBadges:BaseUserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (UserId > 0 && UOBJ.GroupId > 0)
{
DataSet DS = new DataSet();
DS = huDataAccessLayer.dbTools.GetUserAuthority(UserId);
if (!utils.isDataSetEmpty(DS))
{
imgTeamBadge.Visible = Convert.ToBoolean(DS.Tables[0].Rows[0]["isTeam"]);
imgDoctorBadge.Visible = Convert.ToBoolean(DS.Tables[0].Rows[0]["isDoctor"]);
imgAdminBadge.Visible = Convert.ToBoolean(DS.Tables[0].Rows[0]["isAdmin"]);
imgVolunteerBadge.Visible = Convert.ToBoolean(DS.Tables[0].Rows[0]["isVolunteer"]);
imgBloggerBadge.Visible = Convert.ToBoolean(DS.Tables[0].Rows[0]["isBlogger"]);
}
}
}
}
数据转发器是这样的:
<div class="profileContainer">
<asp:HyperLink Enabled='<%# Eval("isActive") %>' ID="profileName_link" runat="server" Text='<%# Eval("Username") %>' NavigateUrl='<%# "/Profile/" + Eval("Username") %>'></asp:HyperLink>
<img id="friend_image" runat="server" src="/css/images/icons/friend.gif" alt="friend" title="Friend" visible='<%# Convert.ToBoolean(Eval("isFriend")) %>' style="vertical-align:middle" />
<ucAB:AuthorityBadges ID="ucAuthBadge" runat="server" UserId='<%# Convert.ToInt32(Eval("UserId")) %>' />
<%# Eval("UserId") %>
<asp:Label ID="status_label1" Text=" · Friend Request Pending" style="font-size:small;" Visible='<%# Convert.ToBoolean(Eval("isFriendReqPending")) %>' runat="server" Font-Bold="false"></asp:Label>
</div>
在这里,在usercontrol行之后,我将立即打印user id,以查看它的有效性(通过<%eval(“user id”)%>)和用户ID是否也有效。我不明白为什么用户控件不能在Ajax回发上接收它?
任何暗示都非常好,
非常感谢!