gpt4 book ai didi

asp.net - 设置回发时的 View 状态

转载 作者:行者123 更新时间:2023-12-03 03:22:38 25 4
gpt4 key购买 nike

我试图在按下按钮时设置一个 ViewState 变量,但它仅在我第二次单击该按钮时有效。这是隐藏代码:

protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
lblInfo.InnerText = String.Format("Hello {0} at {1}!", YourName, DateTime.Now.ToLongTimeString());
}
}

private string YourName
{
get { return (string)ViewState["YourName"]; }
set { ViewState["YourName"] = value; }
}


protected void btnSubmit_Click(object sender, EventArgs e)
{
YourName = txtName.Text;

}

我有什么遗漏的吗?这是设计文件的表单部分,非常基本,就像 POC 一样:

<form id="form1" runat="server">
<div>
Enter your name: <asp:TextBox runat="server" ID="txtName"></asp:TextBox>
<asp:Button runat="server" ID="btnSubmit" Text="OK" onclick="btnSubmit_Click" />
<hr />
<label id="lblInfo" runat="server"></label>
</div>
</form>

PS:示例非常简单,“使用 txtName.Text 而不是 ViewState”不是正确的答案,我需要将信息放在 ViewState 中。

最佳答案

Page_LoadbtnSubmit_Click 之前触发。

如果您想在回发事件触发后执行某些操作,请使用 Page_PreRender

//this will work because YourName has now been set by the click event
protected void Page_PreRender(object sender, EventArgs e)
{
if (Page.IsPostBack)
lblInfo.InnerText = String.Format("Hello {0} at {1}!", YourName, DateTime.Now.ToLongTimeString());
}

基本顺序是:

  • 页面 init 触发(init 无法访问 ViewState)
  • ViewState 已读取
  • 页面加载触发
  • 触发任何事件
  • 预渲染触发
  • 页面呈现

关于asp.net - 设置回发时的 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com