asp.net - 隐藏字段在 !IsPostBack 上为空,在 IsPostBack 上不为空

标签 asp.net request page-lifecycle hidden-field

首先,对于我的问题标题不明确,我深表歉意。我不确定如何在标题中简洁地描述我的问题。

我的 .aspx 中有一个隐藏字段

<input type="hidden" name="hid1" value="0" />

我想在页面加载事件期间设置这个字段的值,如果不是回发。

protected void Page_Load(object sender, EventArgs e) {
    if (!Page.IsPostBack) {

        // This doesn't work!
        Request.Form["hid1"] = "1";

    }

    if (Page.IsPostBack) {

        // This DOES work!
        Request.Form["hid1"] = "1";

    }
}

问题是请求在页面加载事件期间不包含表单数组中的隐藏字段,当它不是回发时(即 - 第一次点击页面)。对页面的后续点击(即回传)导致包含隐藏字段的表单数组。

我确信它与页面的生命周期有关,但我真正需要知道的是如何在页面加载事件期间以及非回发时设置隐藏字段?

编辑: 我真的,真的不想加入 runat="server"属性!

最佳答案

您可以在您的页面类中定义一个属性,然后在您的代码中修改该属性值:

    protected string HiddenFieldValue { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
            HiddenFieldValue = "postback";
        else
            HiddenFieldValue = "not postback";
    }

然后像这样定义隐藏的表单字段,以便将其值设置为属性值:

    <input type='hidden' id='hidden1' value='<%=HiddenFieldValue %>' />

如果您只想在回发或非回发期间设置属性的值,您也可以添加条件:

    <input type='hidden' id='hidden1' value='<% if(IsPostBack) { %> <%=HiddenFieldValue%> <% } %>' />

关于asp.net - 隐藏字段在 !IsPostBack 上为空,在 IsPostBack 上不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472783/

相关文章:

c# - 单击后按钮禁用功能

javascript - 在 JavaScript/jQuery 中向 API 发出 POST 请求

asp.net - 我需要取消订阅(手动订阅)asp.net中的事件吗?

c# - textBox 在回发时丢失值?

c# - 在 ASP.NET 中使用 HTTP 处理程序生成要在电子邮件中显示的图像

asp.net - Microsoft Ajax 中的假 __EVENTVALIDATION

c# - 添加字符串长度验证

php - $_POST *not* 中的值可以是字符串吗?

C++ HTTP 请求

c# - 什么情况下调用了Application_EndRequest但没有调用Application_BeginRequest?