.NET imagebutton - 它需要代码隐藏吗?
我创建了一个简单的 .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:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="ctl00$Login1" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
简单来说,就是需要重新编译DLL。
原因是,有一个
pagename.designer.cs
文件,当您更改标记中的控件时,该文件会更新,并且该文件是一个仅在重新编译时才会更新的代码文件。Simply speaking, you need to recompile the DLL.
The reason being that there is a
pagename.designer.cs
file which gets updated when you change a control in the markup and that is a code file which would only update upon recompilation.如果您仅将标记从 更改为 那么它会失败,因为在编译的 dll 中控件仍然是 LinkButton。
它不需要代码隐藏,但当然 .NET 会处理控件,这需要您在更改控件类型时重新编译。
LinkButton 和 ImageButton 的单击事件签名不同。
If you only changed the markup from
<asp:linkbutton
to<asp:imagebutton
then yes it's going to fail because in the compiled dll the control is still a LinkButton.It doesn't require code-behind but ofcourse .NET does stuff to handle the control which requires you to recompile when you change the type of the control.
The Click Event signatures are different for LinkButton and ImageButton.
您的代码中有一些不同的地方 - 使用:
.
希望这有帮助。
There is something different in your code - the use of:
.
Hope this helps.