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";
}
}
}
}
顯示我的代碼。當我嘗試運行它時,它給我以下錯誤:
'Login'不包含'UserName'的定義,並且沒有找到接受'Login'類型的第一個參數的擴展方法'UserName' )
'Login'不包含'FailureText'的定義,也沒有找到接受'Login'類型的第一個參數的擴展方法'FailureText'(你是不是缺少使用指令或程序集引用?)
注意我已經包含了System.Web.UI.WebControls引用。
的代碼開始。但是,工作,如果我明確的類型轉換登錄控制:
System.Web.UI.WebControls.Login Login1 = (System.Web.UI.WebControls.Login)LoginView1.FindControl("Login1");
任何人都可以請解釋爲什麼會這樣?在第一種情況下,如果我將鼠標懸停在Login關鍵字上,它會顯示「class System.Web.UI.WebControls.Login」,以免引用錯誤。
在此先感謝。 :)
你有另外一個'Page'或'UserControl'叫做'Login'嗎? –
我有另一個頁面,稱爲登錄,並刪除,這開始工作。但我仍然不明白爲什麼錯誤? – Fahad
因爲沒有命名空間前綴的'Login'解析爲您的'Login'頁面,而不是'System.Web.UI.WebControls.Login'控件。 Visual Studio中的工具提示可能使用了過時的智能感知緩存。 –