asp.net-membership - 访问LoginView控件内部的登录控制

  显示原文与译文双语对照的内容
0 0

html :


<body>
<form id="form1" runat="server">
<div>
 <asp:LoginView ID="LoginView1" runat="server">
 <AnonymousTemplate>
 <asp:Login ID="Login1" runat="server" OnLoginError="LoginError">
 </asp:Login>
 </AnonymousTemplate> 
 <LoggedInTemplate>
 Username:
 <asp:LoginName ID="LoginName1" runat="server"/>
 </LoggedInTemplate>
 </asp:LoginView>
</div>
</form>

代码后面:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.Security;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void LoginError(object sender, EventArgs e)
{
 Login Login1 = (Login)LoginView1.FindControl("Login1");
 string userName= Login1.UserName;
 MembershipUser user = Membership.GetUser(userName);
 if (user == null)
 {
 Login1.FailureText ="Username Invalid";
 }
 else
 {
 if (!user.IsApproved)
 {
 Login1.FailureText ="User Not Yet Approved";
 }
 else if (user.IsLockedOut)
 {
 Login1.FailureText ="User Locked Out";
 }
 }
}
}

上面 显示我的代码。 尝试运行这里命令时,会出现以下错误:

"登录'不包含定义'用户名'无扩展方法'用户名'接受类型的第一个参数'登录名( 你是否缺少使用指令或者程序集引用)?

( 你是否可以找到登录'不包含定义'FailureText'无扩展方法'FailureText'接受类型的第一个参数'登录) ( 是否缺少使用指令或者程序集引用?

注意我已经包含了 System.Web.UI.WebControls 引用。

但是,如果显式调整登录控件的大小,代码将开始工作:


System.Web.UI.WebControls.Login Login1 = (System.Web.UI.WebControls.Login)LoginView1.FindControl("Login1");

谁能解释为什么会发生这种情况? 在第一种情况下,如果我在Login关键字上悬停,它会显示"类 System.Web. ui.webcontrols.login",因这里它不会被错误地引用。

感谢你的帮助:)

时间: 原作者:

0 0

最可以能的原因是另一个名为 Login的页面或者用户控件。 如果没有命名空间前缀,编译器将解析 Login 到该页/控件,而不是 System.Web.UI.WebControls.Login 控件。

...