首先,我要为我的问题的不明确标题道歉。我不知道如何在标题中简洁地描述我的问题。
我的.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“属性!
发布于 2009-09-24 17:05:31
可以在页类中定义属性,然后在代码中修改属性值:
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%> <% } %>' />发布于 2009-09-24 16:29:49
尝试将输入转换为HiddenField控件(或者至少是一个runat="server" input),并通过它的ID而不是通过Request.Form引用它。
发布于 2009-09-24 16:29:52
而不是:
<input type="hidden" name="hid1" value="0" />试试这个:
<asp:HiddenField runat="server" ID="hid1" />然后在你的Page_Load()
hid1.Value = "whatever...";在以这种方式声明回发之前和之后,它都是可见的。
https://stackoverflow.com/questions/1472783
复制相似问题