.NET ImageButton - это требует кода позади? - PullRequest
0 голосов
/ 29 июля 2010

Я создал простой .NET usercontrol для входа в личный кабинет на веб-сайте (сайт работает на Umbraco и использует их поставщика членства).

Он работал нормально, пока я не изменил кнопку отправки.при входе в систему usercontrol к кнопке изображения.Теперь он, похоже, ничего не передает - он просто перезагружает страницу при нажатии и не регистрирует пользователя.

В данный момент элемент управления просто вставляется как стандартный .aspx usercontrol, безбудучи скомпилированным в DLL - который работал со стандартной кнопкой отправки, но не с кнопкой изображения.Я думаю, что для работы кнопки image требуется страница с выделенным кодом, поэтому мне нужно скомпилировать ее.Это правильно?

Я полный нуб в .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 ... было это:

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

Ответы [ 3 ]

0 голосов
/ 02 августа 2010

Проще говоря, вам нужно перекомпилировать DLL.
Причина в том, что существует файл pagename.designer.cs, который обновляется при изменении элемента управления в разметке, и это файл кода, который обновляется только после перекомпиляции.

НТН!

0 голосов
/ 12 августа 2010

В вашем коде есть что-то другое - использование:

CommandName="Login"
.

Надеюсь, это поможет.

0 голосов
/ 29 июля 2010

Если вы изменили только разметку с <asp:linkbutton на <asp:imagebutton, тогда да, она потерпит неудачу, потому что в скомпилированной dll элемент управления по-прежнему является LinkButton.

Для этого не требуется выделение кода, но, конечно, .NET выполняет работу с элементом управления, что требует перекомпиляции при изменении типа элемента управления.

Подписи Click Event отличаются для LinkButton и ImageButton.

...