ASP.NET Веб-формы С Несколькими Кнопками

#c# #html #asp.net #vb.net #webforms

Вопрос:

Я создаю ASP.NET приложение для веб-форм. Я пытаюсь найти простой способ доступа к нескольким элементам управления в форме.

Я пытаюсь получить доступ html serverClick к событию кнопок, но оно не работает и работает только с одной кнопкой на странице.

Сначала я попытался использовать этот код, чтобы получить событие click при нажатии HTML-кнопки. Это код для кнопки HTML.

 <form runat="server">
<div class="btn-container">
<a runat="server" onserverclick="infobutton_Click" class="inf-btn" exc-content="inf_button" id="infoButton">Click Here for More Information</a>
</div>
</form>
 

Этот код получает событие нажатия кнопки и отображает пример окна сообщения.

 Protected Sub infoButton_Click(ByVal sender As Object, ByVal e As EventArgs)
        ScriptManager.RegisterClientScriptBlock(Me, Me.[GetType](), "alertMessage", "alert('" amp; "The Button Was Clicked" amp; "')", True) 'Displays a JavaScript Alert
End Sub
 

Этот код отлично работает для одной кнопки на странице, однако я хочу использовать несколько кнопок на одной странице. Если я удалю <form> тег, событие нажатия кнопки не регистрируется. Если я добавлю <form> тег для каждой кнопки, он сообщит об ошибке, что не может быть нескольких <form> тегов. Если я заключу всю страницу <form> тегом, сообщение об ошибке сообщит, что конфигурация «повреждена».

Это было бы просто, если бы у меня был ASP.NET кнопка управления ( <asp:button> ), но я не могу преобразовать все элементы на странице.

Я не уверен, что это неправильно, так как вся информация в Интернете говорит, что это правильно. Могу ли я как-нибудь это исправить?

Комментарии:

1. Вы говорите, что хотите использовать несколько кнопок на одной странице. Можете ли вы показать нам, что вы пробовали? Во всяком случае, мне непонятно, почему это не сработало. Забудьте о тегах формы, просто добавьте еще одну или две кнопки и покажите нам, что вы сделали на странице и в коде. Повторение того, что вы сделали с первой кнопкой, должно быть всем, что вам нужно сделать.

2. @wazz Я только что вставил тот же тег кнопки <a> только под другим идентификатором и именем onserverclick. Я не могу поместить и то, и другое в форму, так как между ними есть другие элементы. Это работает только тогда, когда есть тег формы, охватывающий тег

3. Да, требуется (1) тег формы, я не имел в виду, что не используйте тег формы. Но я все еще не понимаю, в чем проблема.

4. У меня есть две кнопки. Между ними есть элементы. Если я заключу эти элементы вместе с двумя тегами кнопок, ASP сообщит об ошибке повреждения файла.

5. @wazz например, теги тела не могут быть в форме.

Ответ №1:

 <body>
    <form id="form1" runat="server">

        <div class="btn-container">
            <a runat="server" onserverclick="infobutton1_Click" id="infoButton1">
                Click Here for More Information</a>
            <a runat="server" onserverclick="infobutton2_Click" id="infoButton2">
                Click Here for More Information</a>
            <a runat="server" onserverclick="infobutton3_Click" id="infoButton3">
                Click Here for More Information</a>
        </div>

    </form>
</body>
 

Код позади (C#)

 protected void infobutton1_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterClientScriptBlock(this, Page.GetType(), 
        "alertMessage", "alert('"   "Button 1 Was Clicked"   "')", true);
}
protected void infobutton2_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterClientScriptBlock(this, Page.GetType(), 
        "alertMessage", "alert('"   "Button 2 Was Clicked"   "')", true);
}
protected void infobutton3_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterClientScriptBlock(this, Page.GetType(), 
        "alertMessage", "alert('"   "Button 3 Was Clicked"   "')", true);
}
 

Комментарии:

1. Если я заключу обе кнопки в форму, я получу эту ошибку: Server Error in '/' Application. The state information is invalid for this page and might be corrupted. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Web.HttpException: The state information is invalid for this page and might be corrupted.

2. Это на самом деле не связано с кодом. Это больше связано с тем (что-то вроде), что кэш браузера не согласен с новыми материалами, которые вы пытаетесь загрузить. Обычно это можно устранить, перезагрузив страницу с помощью клавиши F5 или Ctrl F5, или очистив кэш, или более экстремальными способами, такими как перезапуск браузера и/или среды разработки, и/или очистка кэшированных ASP.NET папки (не должны быть необходимыми). Убедитесь, что на странице нет остатков старого HTML или случайных вещей, которые следует удалить.

3. Я полагаю, что обнаружил ошибку, извините. Вокруг валялся случайный тег <форма>, который был скрыт от поиска. Теперь это работает.

4. Круто. Обычно так и происходит.