2015-04-08 7 views
1

У меня есть форма (mainpage.aspx), на которой есть кнопка «Отменить». Вот код для кнопки:asp.net продолжает вызов функции в page_load

<asp:LinkButton ID="btnCancel" runat="server" Text="Cancel" CssClass="btn btn-default" OnClick="btnCancel_Click" /> 

и вызываемая функция

protected void btnCancel_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("EventList.aspx"); 
    } 

Так как вы можете увидеть, что кнопка сделать это просто. Просто перейдите на другую страницу. Но, похоже, этого не происходит. Каждый раз, когда я нажимаю на кнопку Отмена, сначала попытается загрузить код

Response.Redirect("EventList.aspx"); 

, но потом как-то он будет пытаться выполнить коды ниже:

if (hdnEventId.Value != "" && hdnEventId.Value != "0") 
      { 
       LoadEvent(); 
} 

Я знаю это, потому что я поставил точку останова на Response.Redirect ("EventList.aspx"); и после этого я шаг в вышеприведенном

кстати коды выше расположены внутри

protected void Page_Load(object sender, EventArgs e) 

внутри файла mainpage.aspx.cs

ответ

1

Это потому, что Page_Load вызывается любой обратной передачи и код вы на самом деле делаете обратную передачу, нажав «Отмена». Решение состоит в том, чтобы обернуть без обратной передачи специального кода в IsPostBack проверке:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     if (hdnEventId.Value != "" && hdnEventId.Value != "0") 
     { 
      LoadEvent(); 
     } 
    } 
} 
+2

Был просто набрав что-то подобное LOL –

+2

@M_Griffiths Ха-ха всегда так, если бы я имел 10 РЭП каждый раз я отказался от ответа, потому что кто-то избил меня до этого, у меня было бы больше репутации, чем у Джона Скита :) – mattytommo

+0

@mattytommo, но коды, которые сейчас называются, уже внутри if (! Page.IsPostBack) – imin

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