2013-10-10 2 views
0

У меня есть страница .aspx с добавлением UserControl. В UserControl, когда LinkButton is clicked это не Postback с первой попытки. но когда мы снова click, он делает Postback, а затем только перенаправления страницы не знают почему?LinkButton не возвращает на первый клик в asp.net?

Любая идея?

В .aspx разметке:

<asp:LinkButton ID="lnkCheckOut" runat="server" 
         CssClass="button orange" onclick="lnkCheckOut_Click">Checkout</asp:LinkButton> 

In.cs файл:

protected void lnkCheckOut_Click(object sender, EventArgs e) 
    { 
     if (Session["UserID"] != null) 
     { 
      lnkCheckOut.PostBackUrl = "~/checkout.aspx?type=checkout"; 
      //Response.Redirect("~/checkout.aspx?type=checkout"); 
      Session["IsQuoteAdded"] = "false"; 
     } 
     //if not logged in user 
     else 
     { 
      lnkCheckOut.PostBackUrl = "~/login.aspx?returnUrl="+HttpUtility.UrlEncode(Request.RawUrl); 
     } 
    } 

Когда я вижу разметку в браузере (с помощью клавиши F12 в Chrome) на первого щелчка его показывает:

<a id="ctl00_ContentPlaceHolder1_shpCart_lnkCheckOut" class="button orange" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$shpCart$lnkCheckOut','')">Checkout</a> 

На второй клик:

<a id="ctl00_ContentPlaceHolder1_shpCart_lnkCheckOut" class="button orange" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$shpCart$lnkCheckOut", "", false, "", "login.aspx?returnUrl=%2fNew%2fMyBox.aspx", false, true))'>Checkout</a> 

Примечание: Я не использую любой UpdatePanel в веб-страницы или UserControl.

Помогите оценить!

+0

Я не могу быть уверен, почему это происходит, но альтернативный способ это может быть, что вы используете функцию __doPostBack в OnClick случае кнопки ссылки в JavaScript. – Neelam

+0

Привет, Neelam, но как насчет проверки сессии? –

+0

У меня был такой вид проблемы назад, и это решение, которое я использовал в конце, когда я не мог найти что-либо еще. Вам также нужно будет добавить EnableEventValidation = false на странице .aspx. Я не уверен в проверка сессии. Вы должны посмотреть, чтобы решить эту проблему, держите мое предложение в крайнем случае. – Neelam

ответ

0

В вашей разметке нет PostBackUrl. Таким образом, при первом щелчке он фактически отправит обратно на ту же страницу, и ваш обработчик событий будет запущен.

Затем в вашем обработчике событий вы устанавливаете PostBackUrl.

Итак, во второй раз кто-то нажимает на ссылку, она будет публиковать ее по этому адресу. Ваш код работает как запроектированный :)

Редактировать: Я бы предложил изменить на Response.Redirect, но трудно точно знать, что должен делать ваш код.

+0

hi @pattermeister, так какова ваша рекомендация справиться с этой ситуацией? можем ли мы сделать это в aspx condition markp? любая подсказка кода образца оценивается! также пытался с Response.Redirect(), но все же не работает так комментируется в опубликованном коде! что-нибудь еще? –

1

Ваш код не перенаправляет страницу, на которую он только что назначил URL. Используйте ниже коды, чтобы исправить это.

protected void lnkCheckOut_Click(object sender, EventArgs e) 
{ 
    if (Session["UserID"] != null) 
    { 
     //lnkCheckOut.PostBackUrl = "~/checkout.aspx?type=checkout"; 
     Session["IsQuoteAdded"] = "false"; 
     Response.Redirect(@"~/checkout.aspx?type=checkout"); 

    } 
    //if not logged in user 
    else 
    { 
     Response.Redirect(@"~/login.aspx?returnUrl="+HttpUtility.UrlEncode(Request.RawUrl)); 
    } 
} 
+0

привет @ Avinash Jha, я уже упомянул в вышеупомянутом комментарии, что он не будет работать –

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