2010-07-29 8 views
0

웹 사이트의 멤버 영역에 로그인하기위한 간단한 .NET 사용자 컨트롤을 만들었습니다 (이 사이트는 Umbraco에서 제공하고 멤버십 공급자를 사용합니다)..NET imagebutton - 코드 숨김이 필요합니까?

로그인 사용자 정의 컨트롤의 제출 단추를 이미지 단추로 변경하기 전까지는 문제가 없습니다. 이제 아무 것도 제출하지 않는 것 같습니다. 클릭하면 페이지가 다시로드되고 사용자는 로그인하지 않습니다.

현재 컨트롤은 컴파일되지 않고 표준 .aspx usercontrol로 삽입되는 중입니다. DLL에 - 표준 제출 버튼과 함께 작동하지만 imagebutton과 함께하지 않습니다. imagebutton을 작동 시키려면 코드 숨김 페이지가 필요하다고 생각하고 있으므로 컴파일해야합니다. 이게 옳은 거니?

아마도 당신이 말할 수 있듯이 .NET에서의 멍청한 놈입니다. 따라서 어떤 조언이 좋을 수도 있습니다. 여기

내가 지금 가지고있는 코드입니다 :

<%@ Control Language="C#" AutoEventWireup="true" %> 
<asp:Login ID="Login1" runat="server"> 
    <LayoutTemplate> 
     <fieldset> 
      <legend>Log in details</legend> 
      <div> 
       <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label> 
       <asp:TextBox ID="UserName" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
        ControlToValidate="UserName" ErrorMessage="User Name is required." 
        ToolTip="User Name is required." ValidationGroup="ctl00$Login1">*</asp:RequiredFieldValidator> 
      </div> 
      <div> 
       <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label> 
       <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" 
        ControlToValidate="Password" ErrorMessage="Password is required." 
        ToolTip="Password is required." ValidationGroup="ctl00$Login1">*</asp:RequiredFieldValidator> 
      </div> 
      <div> 
       <asp:CheckBox ID="RememberMe" runat="server" Text="Remember me next time." /> 
      </div> 
      <div> 
       <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal> 
      </div> 
     </fieldset> 

     <asp:ImageButton ID="LoginButton" runat="server" src="~/css/img/btn_log-in.png" CssClass="rollover" ValidationGroup="ctl00$Login1" /> 

     <br /> 
     <br /> 
     <div style="background: #fc0">STATUS (to be removed) <asp:LoginStatus ID="LoginStatus1" LoginText="Log in or register" LogoutText="Log out" runat="server" /></div> 
    </LayoutTemplate> 
</asp:Login> 

<asp:ImageButton의 INSEAD ... 그것은이 있다고했다 일한 버전에서 다른 유일한 것은 : 당신이 경우

<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="ctl00$Login1" /> 
+1

"이전"및 "이후"코드를 게시 할 수 있습니까? 문제 진단에 도움이됩니다. – ChrisF

답변

0

간단히 말하면 DLL을 다시 컴파일해야합니다.
마크 업에서 컨트롤을 변경할 때 업데이트되고 다시 컴파일 할 때만 업데이트되는 코드 파일 인 pagename.designer.cs 파일이있는 이유는 다음과 같습니다.

HTH!

+0

감사합니다 Dienekes. 그래서 명확히하기 위해 DLL을 컴파일해야합니까? 나는 이것을 .aspx 페이지로 실행할 수 없다. – Dan

0

<asp:linkbutton에서 <asp:imagebutton으로 마크 업을 변경 한 다음 컴파일 된 dll에서 컨트롤이 여전히 LinkButton이기 때문에 오류가 발생합니다.

코드 숨김이 필요하지 않지만 .NET에서는 컨트롤 유형을 변경할 때 다시 컴파일해야하는 컨트롤을 처리합니다.

Click 이벤트 서명은 LinkButton 및 ImageButton에 대해 다릅니다.

+0

미안하지만, 나는 정말로 따라하지 않는다. 단순히 기본적인 usercontrol 이었기 때문에 컴파일 된 DLL은 없었습니다. umbraco에서는 .aspx를 업로드하기 만하면되므로 DLL을 컴파일 할 필요가 없습니다. 최소한 표준 제출 버튼 인 이 없었습니다. 버튼에서 이미지 버튼으로 마크 업을 변경하고 'src'속성을 추가했습니다. 이것에는 'onclick'속성이 없습니다. 수동으로 추가 한 다음 호출하는 함수를 만드는 데 필요한 것입니까? 함수에서 무엇이 있어야하며, 함수는 (.aspx 페이지에서) 어디에서 가야합니까? 모든 질문에 대해 유감스럽게 생각합니다. – Dan

0

귀하의 코드에는 뭔가 다른 것이 있습니다 :

CommandName="Login"
.

희망이 도움이됩니다.