【一】:用户登陆后把用户登陆表单隐藏,然后把登陆后的用户名显示出来,使用VS提供的【LoginView控件+内置票据认证】比较方便:
该控件提供了两个模板:登陆前用户模板和登陆后用户模板。
<asp:LoginView ID="LoginView1" runat="server">
<AnonymousTemplate>
//登陆前用户模板
</AnonymousTemplate>
<LoggedInTemplate>
//登陆后用户模板
</LoggedInTemplate>
</asp:LoginView>
把登陆表单包含到登陆前的模板中:
登陆后的模板,用控件LoginName显示用户名和用控件LoginStatus来注销登陆。
<asp:LoginView ID="LoginView1" runat="server">
<AnonymousTemplate>
<table width="785" height="136" border="0">
<tr>
<td width="167" valign="top" background="images/pic_005.gif">
<table width="100%" height="134" border="0">
<tr>
<td height="48">
</td>
</tr>
<tr>
<td>
用户:
<asp:TextBox ID="txtname" runat="server" Width="101px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
密码:
<asp:TextBox ID="txtpwd" runat="server" Width="98px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="center">
<asp:LinkButton ID="lbtnlogin" runat="server" οnclick="lbtnlogin_Click">登陆</asp:LinkButton> <a href="reg1.aspx">注册</a> <a href="getpwd1.html">忘记密码</a>
</td>
</tr>
</table>
</td>
<td width="405">
<img src="images/adad.jpg" width="396" height="136" />
</td>
<td width="199">
<ul class="ul_znxw">
<li><a href="#">站内新闻一</a></li>
<li><a href="#">站内新闻二</a></li>
<li><a href="#">站内新闻三</a></li>
<li><a href="#">站内新闻四</a></li>
<li><a href="#">站内新闻五</a></li>
</ul>
</td>
</tr>
</table>
</AnonymousTemplate>
<LoggedInTemplate>
您好,
<asp:LoginName ID="LoginName1" runat="server" />
<asp:LoginStatus ID="LoginStatus1" runat="server" />
</LoggedInTemplate>
</asp:LoginView>
问题出现:把登陆表单包含在LoginView中以后,在cs代码中就找不到txtname和txtpwd控件。
解决之道:
string name =(LoginView1.FindControl("txtname") as TextBox).Text.Trim();