代码之家  ›  专栏  ›  技术社区  ›  Jagd Dai

隐藏字段在上为空!IsPostBack,且在IsPostBack上不为null

  •  2
  • Jagd Dai  · 技术社区  · 15 年前

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

    我的.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";
    
        }
    }
    

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

    编辑:

    5 回复  |  直到 13 年前
        1
  •  4
  •   Venr    15 年前

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

        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%> <% } %>' />
    
        2
  •  2
  •   bdukes Jon Skeet    15 年前

    HiddenField 控制(或至少控制一个 runat="server" input ),并通过其ID而不是通过 Request.Form .

        3
  •  2
  •   Bob Kaufman    15 年前

    而不是:

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

    试试这个:

    <asp:HiddenField runat="server" ID="hid1" />
    

    然后在你的 Page_Load()

    hid1.Value = "whatever...";
    

    当您以这种方式声明它时,它将在回发之前和之后都可见。

        4
  •  1
  •   Tom van Enckevort    15 年前

    为什么不通过在输入控件上设置“runat=“server””将其设置为服务器控件?然后它将可以从您的代码隐藏中访问,并且您将能够在第一页加载期间设置该值。

        5
  •  1
  •   Pablo Castilla    15 年前

    为什么不通过样式类访问该字段并使用runat server=?