我创建了一个简单的.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" />
答案 0 :(得分:0)
如果您只将标记从<asp:linkbutton
更改为<asp:imagebutton
,那么肯定会失败,因为在编译后的dll中,控件仍然是LinkButton。
它不需要代码隐藏但是当然.NET会处理控件,当你更改控件的类型时需要你重新编译。
ClickButton和ImageButton的Click事件签名不同。
答案 1 :(得分:0)
简单来说,您需要重新编译DLL 原因是有一个pagename.designer.cs文件在更改标记中的控件时会更新,并且只是在重新编译时才会更新的代码文件。
HTH!
答案 2 :(得分:0)
您的代码中有不同的内容 - 使用:
CommandName="Login"。
希望这有帮助。