.NET imagebutton - 它需要代码隐藏吗?

时间:2010-07-29 14:20:21

标签: .net user-controls umbraco

我创建了一个简单的.NET用户控件,用于登录网站上的成员区域(该站点由Umbraco提供支持并使用其成员资格提供程序。)

在我将登录用户控件上的提交按钮更改为图像按钮之前,它工作正常。现在它似乎没有提交任何东西 - 它只是在点击时重新加载页面而不会记录用户。

目前,控件只是作为标准的.aspx用户控件插入,而不是编译成DLL - 它使用标准的提交按钮但不与图像按钮一起使用。我认为要使图像按钮工作需要一个代码隐藏页面,因此我需要编译它。这是对的吗?

我可能会告诉你,我是.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的{​​{1}} ...它有这个:

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

3 个答案:

答案 0 :(得分:0)

如果您只将标记从<asp:linkbutton更改为<asp:imagebutton,那么肯定会失败,因为在编译后的dll中,控件仍然是LinkBut​​ton。

它不需要代码隐藏但是当然.NET会处理控件,当你更改控件的类型时需要你重新编译。

ClickButton和ImageButton的Click事件签名不同。

答案 1 :(得分:0)

简单来说,您需要重新编译DLL 原因是有一个pagename.designer.cs文件在更改标记中的控件时会更新,并且只是在重新编译时才会更新的代码文件。

HTH!

答案 2 :(得分:0)

您的代码中有不同的内容 - 使用:

CommandName="Login"

希望这有帮助。