2013-07-08 5 views
0

PFB следующий код, который присутствует в одном из моих .aspx-файлов. Я добавил кнопку и добавил метод в код позади. Я подключил процесс к отладчику, но событие нажатия кнопки не запускается. Все в остальной части моего приложения работает нормально, но только на этом экране никакое событие не запускается на сервере. Если я добавлю событие onClientClick, он будет запущен.Событие нажатия кнопки на сервере не запускается

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Site2.Master" AutoEventWireup="true" 
CodeBehind="AdminPage.aspx.cs" Inherits="RoomBook.Views.AdminPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
<script language="javascript" type="text/javascript"> 
    $(function() { 
     var allPanels = $('.accordion > dd').hide(1000); 
     $('.accordion > dt > a').click(function() { 
      allPanels.slideUp(); 
      $(this).parent().next().show(1000); 
     }); 
     return false; 
    }); 

</script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<asp:ScriptManager runat="server"> 
</asp:ScriptManager> 
<dl class="accordion"> 
    <dt><a href="#">Modify/Delete Room</a></dt> 
    <dd> 
     <asp:UpdatePanel runat="server"> 
      <ContentTemplate> 
       <label id="roomNumber0" class="itemLeft"> 
        Room Name 
       </label> 
       <asp:DropDownList class="inputTextRoom" ID="ddRoomName" runat="server"> 
       </asp:DropDownList> 
       <br /> 
       <label id="Label1" class="itemLeft"> 
        Status</label> 
       <asp:RadioButtonList class="radioButton" ID="rbStatus" runat="server"> 
        <asp:ListItem Text="Active"></asp:ListItem> 
        <asp:ListItem Text="Deactive"></asp:ListItem> 
       </asp:RadioButtonList> 
       <asp:Button ID="btnModify" runat="server" Text="Button" OnClick="btnModify_Click" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </dd> 
</dl> 
</asp:Content> 

В коде позади определения метода является:

protected void btnModify_Click(object sender, EventArgs e) 
    { 

     RoomDomain roomdomain = new RoomDomain(); 
     string userName = (WindowsIdentity.GetCurrent().Name.ToString().Split('\\'))[1]; 

     if (!(ddRoomName.SelectedIndex == 0)) 
     { 
      roomdomain.RoomName = ddRoomName.SelectedItem.Value; 

      if (rbStatus.SelectedItem.Value == "Active") 
      { 
       roomdomain.IsActive = true; 
      } 
      else 
      { 
       roomdomain.IsActive = false; 
      } 
      adminPage.ModifyExistingRoom(roomdomain, userName); 
     } 

    } 

Я попытался добавить несколько кнопок на странице, но ни один из них не работает. Когда я присоединяю процесс, точка останова попадает на другие события, но не на нажатие кнопки. Любые предложения относительно того, какую ошибку я совершил в этом фрагменте кода?

+0

уточнить: есть ли какая-либо ошибка происходит, или же сервер просто игнорировать щелчок? –

+0

нет ошибок; при нажатии кнопки ничего не происходит. Точка разлома вообще не попадает. –

+0

У вас есть форма runat = "server" на главной странице? – rach

ответ

0

Ваша кнопка находится внутри панели обновления, поэтому вам нужно добавить кнопку в качестве триггера на панель обновления. Добавить в нижней части панели обновления:

</ContentTemplate> 
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="btnModify" /> 
</Triggers> 
</asp:UpdatePanel> 
+0

Он по-прежнему не работает. На других экранах я использовал панель обновления так же. –

0

вы можете использовать

<asp:AsyncPostBackTrigger ControlID="btnModify" /> 
+0

Извините, но не работает. –

+0

добавьте атрибут CauseValidation и установите для него значение false в вашей кнопке. – Jack

0

Я создал новый Web Forms проекты в 2010 году и в 2012 году, и не смогли воспроизвести эту проблему. Я добавил ваш скрипт в верхнее содержимое и разметку в область «MainContent», и в обоих случаях кнопка не запускала никаких проблем. (Я изменил код для простого переключения переключателей, и снова в обоих проектах он работал нормально.) Мне интересно, может ли ваш сценарий каким-то образом вызвать проблему.

+0

Я создал новый экран с теми же подробностями, что все работает нормально, но я понятия не имею, почему, когда я копирую вставку содержимого aspx, он не работает. –

0
<asp:Button ID="btnModify" runat="server" Text="Button" OnClick="btnModify_Click" UseSubmitBehavior="false"/> 

Поскольку кнопка находится внутри UpdatePanel, измените ее, чтобы использовать механизм обратной передачи, а не форму браузера.

Button.UseSubmitBehavior Property

Смежные вопросы