2013-12-04 2 views
0

Так что я пытаюсь сохранить переменную в представлении и использовать сразу после нажатия кнопки. Проблема в том, что вам нужно нажать botton 2 раза, прежде чем что-то будет написано. Этот код является проблемой, так как я вижу это boilde вплоть до основ.Задержка при чтении данных из viewstate

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
    <body> 
     <form id="form1" runat="server"> 
      <asp:Button ID="Button1" runat="server" Text="Button 1" OnClick="Button1_Click" /> 
      <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button 2" /> 
     </form> 
    </body> 
</html> 

в коде позади с использованием системы;

public partial class _Default:System.Web.UI.Page { 

    protected void Page_Load(object sender, EventArgs e) { 
     Response.Write(ViewState["Button"]); 
    } 

    protected void Button1_Click(object sender, EventArgs e) { 
     ViewState["Button"] = "Button 1"; 
    } 

    protected void Button2_Click(object sender, EventArgs e) { 
     ViewState["Button"] = "Button 2"; 
    } 
} 

ответ

0

Событие загрузки страницы происходит до того, как вы нажмете кнопку мыши, поэтому на первой странице загрузите состояние, которое пустое.

При первом нажатии кнопки он по-прежнему пуст, потому что загрузка страницы сначала вызывает вызов, а затем нажмите кнопку.

Теперь на второй раз посмотреть щелчок кнопки состояния имеет значение, так что будет отображаться на странице

Здесь вы должны использовать страницу предварительного рендеринга события, чтобы показать вид значение состояния, как следующая

protected override void OnPreRender(EventArgs e) 
     { 
      base.OnPreRender(e); 

      Response.Write(ViewState["Button"]); 
     } 

Надня в вашем классе страницы и он будет работать одним нажатием кнопки

+0

спасибо, что это было полезно – user2726213