verstecktes Feld ist null auf! IsPostBack und nicht null auf IsPostBack
-
16-09-2019 - |
Frage
Zunächst werde ich für den unklaren Titel meiner Frage entschuldigen. Ich war nicht sicher, wie man kurz und bündig mein Problem in einem Titel beschreiben.
Ich habe ein verstecktes Feld in meinem .aspx
<input type="hidden" name="hid1" value="0" />
Ich mag während des Seitenladeereignisses den Wert dieses Feldes setzen, und wenn es kein Postbacks.
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";
}
}
Das Problem ist, dass der Antrag nicht das versteckte Feld während des Seitenladeereignisses in Form Array enthält, wenn es kein Postbacks (dh - das erste Mal der Seite getroffen wird). Nachfolgende Zugriffe auf der Seite (dh - Postbacks). Ergebnis in Form Array das versteckte Feld mit
Ich bin sicher, dass es mit dem Lebenszyklus der Seite zu tun hat, aber was ich wirklich wissen muß, ist Wie kann ich das versteckte Feld während des Seitenladeereignisses gesetzt und wenn es kein Postback?
EDIT: Ich wirklich, wirklich will nicht die runat = „server“ -Attribut zu übernehmen!
Lösung
Sie können eine Eigenschaft in Ihrer Seite Klasse definieren und dann den Eigenschaftswert in Ihrem Code ändern:
protected string HiddenFieldValue { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
HiddenFieldValue = "postback";
else
HiddenFieldValue = "not postback";
}
Dann das versteckte Formularfeld wie folgt definieren, so dass es Wert ist auf dem Eigenschaftswert festgelegt ist:
<input type='hidden' id='hidden1' value='<%=HiddenFieldValue %>' />
Wenn Sie nur der Wert bildet die Eigenschaft während eines Postbacks oder Nicht-Postbacks einstellen möchten können Sie den Zustand als auch hinzufügen:
<input type='hidden' id='hidden1' value='<% if(IsPostBack) { %> <%=HiddenFieldValue%> <% } %>' />
Andere Tipps
Versuchen Sie die Eingabe in eine Umwandlung Statt: versuchen Sie dies: Dann in Ihrem Es wird sichtbar, sowohl vor als auch nach dem Postback, wenn man es auf diese Weise erklären. HiddenField
Steuerung (oder zumindest ein
<input type="hidden" name="hid1" value="0" />
<asp:HiddenField runat="server" ID="hid1" />
Page_Load()
hid1.Value = "whatever...";
Warum Sie es nicht ein Server-Steuerelement, indem Sie ‚runat =‚server‘‘ auf der Eingangssteuer Einstellung? Dann wird es hinter aus dem Code zugänglich sein, und Sie werden in der Lage, den Wert während der ersten Seite zu laden, zu setzen.
warum nicht zugreifen Sie dieses Feld durch eine Stilklasse und verwenden Runat server =?