我正在使用loginview。在loginview中有一个gridview,我想用数据库表绑定它,但是我无法在.cs代码中访问这个gridview。
我试过了:
GridView GridView1 = (GridView)LoginView1.FindControl("GridView1");
但是gridview再次没有初始化。 请注意,在web.config文件中我设置了
<authentication mode="Forms"/>
有人知道这个问题的解决方案吗?
代码的一部分:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:LoginView ID="LoginView1" runat="server">
<LoggedInTemplate>
<div class="tab-content" id="mytabcontent">
<div class="tab-pane active" id="new1">
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</div>
</LoggedInTemplate>
<AnonymousTemplate>
<asp:HyperLink runat="server" navigationURL = "default.aspx">Login</asp:HyperLink>
</AnonymousTemplate>
</asp:LoginView>
</asp:Content>
答案 0 :(得分:2)
您可能会收到此错误,因为用户可能未经过身份验证。
尝试
if(User.Identity.IsAuthenticated)
{
GridView GridView1 = (GridView)LoginView1.FindControl("GridView1");
}
使用断点并检查是否调用了访问Gridview的行。
更新
验证创建验证Cookie
FormsAuthenticationTicket authTicket = new
FormsAuthenticationTicket(1, //version
username.ToString(), //user name
DateTime.Now, //creation
DateTime.Now.AddDays(365), //Expiration
false, ""
//Persistent
);
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(username.ToString(), true);
//在登录页面中创建cookie后重定向到安全页面
答案 1 :(得分:0)
您可以只处理GridView的init事件:
<asp:GridView ID="GridView1" runat="server" OnInit="GridView1_Init">
</asp:GridView>