首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏字段在IsPostBack上为空,在IsPostBack上为非空。

隐藏字段在IsPostBack上为空,在IsPostBack上为非空。
EN

Stack Overflow用户
提问于 2009-09-24 16:24:57
回答 4查看 10K关注 0票数 2

首先,我要为我的问题的不明确标题道歉。我不知道如何在标题中简洁地描述我的问题。

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

代码语言:javascript
复制
<input type="hidden" name="hid1" value="0" />

我希望在页面加载事件期间设置此字段的值,如果它不是回发的话。

代码语言:javascript
复制
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“属性!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-24 17:05:31

可以在页类中定义属性,然后在代码中修改属性值:

代码语言:javascript
复制
    protected string HiddenFieldValue { get; set; }

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

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

代码语言:javascript
复制
    <input type='hidden' id='hidden1' value='<%=HiddenFieldValue %>' />

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

代码语言:javascript
复制
    <input type='hidden' id='hidden1' value='<% if(IsPostBack) { %> <%=HiddenFieldValue%> <% } %>' />
票数 4
EN

Stack Overflow用户

发布于 2009-09-24 16:29:49

尝试将输入转换为HiddenField控件(或者至少是一个runat="server" input),并通过它的ID而不是通过Request.Form引用它。

票数 2
EN

Stack Overflow用户

发布于 2009-09-24 16:29:52

而不是:

代码语言:javascript
复制
<input type="hidden" name="hid1" value="0" />

试试这个:

代码语言:javascript
复制
<asp:HiddenField runat="server" ID="hid1" />

然后在你的Page_Load()

代码语言:javascript
复制
hid1.Value = "whatever...";

在以这种方式声明回发之前和之后,它都是可见的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1472783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档