首先,对于我的问题标题不明确,我深表歉意。我不确定如何在标题中简洁地描述我的问题。
我的 .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/