Пользовательский элемент управления определяет свойство с именем UserCanEdit :
private bool _userCanEdit=false;
public bool UserCanEdit
{
get { return _userCanEdit; }
set { _userCanEdit = value; }
}
Этот пользовательский элемент управления также содержит следующее GridView :
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="C" runat="server" Visible='<%# UserCanEdit %>' Text="Visibility"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Чтобы элемент управления C был видимым, UserCanEdit должен быть установлен в true . Если я установлю его внутри Page_Init () , то C действительно будет видимым. Но если я установлю его внутри Page_Load () , то C не будет видно:
protected void Page_Load(object sender, EventArgs e)
{
this.UserCanEdit = (this.Page.User.Identity.IsAuthenticated &&
(this.Page.User.IsInRole("Administrators") ||
this.Page.User.IsInRole("Editors")));
GridView1.DataBind();
}
Так почему же C не видно, если * Page42Load () установлено UserCanEdit ? Насколько я знаю, однозначное выражение привязки <% #%> вычисляется только при вызове GridView.DataBind () , что происходит после UserCanEdit установлено на true ?!
ура