2012-11-30 2 views
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'를 찾을 수 없습니다 using 지시문 또는 어셈블리 참조가 없습니다.)

참고 System.Web.UI.WebControls 참조를 포함 시켰습니다. 이런 일이 왜

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

사람이 설명해주십시오 수 :

코드는 내가 명시 적으로 로그인 제어 캐스트 경우, 그러나, 작업 시작? 첫 번째 경우 Login 키워드 위로 마우스를 가져 가면 "System.Web.UI.WebControls.Login"클래스가 표시되므로 잘못 참조되지 않습니다.

미리 감사드립니다. :)

+1

'Login '이라는 다른'Page' 또는'UserControl'이 있습니까? –

+0

나는 Login이라고하는 또 다른 페이지를 가지고 있었고 이것을 삭제하면 작업이 시작되었습니다. 그러나 나는 아직도 왜 오류를 이해하지 못합니까? – Fahad

+1

네임 스페이스 접두사가없는'Login'은'System.Web.UI.WebControls.Login' 컨트롤이 아니라'Login' 페이지로 해석되기 때문에. Visual Studio의 툴팁은 오래된 인텔리 센스 캐시를 사용하고있었습니다. –

답변

1

가장 큰 원인은 이라는 또 다른 페이지 또는 사용자 정의 컨트롤입니다. 네임 스페이스 접두사가 없으면 컴파일러에서 System.Web.UI.WebControls.Login 컨트롤이 아닌 Login을 해당 페이지/컨트롤로 확인합니다.