Ich habe eine WebForms-Seite, der zur Laufzeit einige zusätzliche Steuerelemente hinzugefügt werden sollen. Momentan erreiche ich dies im Page_Load-Ereignis mit einem Literal-Steuerelement. In Textfelder in WebForms einspeichern und den Wert für Postback beibehalten
Zum Beispiel die Seite sieht wie folgt aus (beachten Sie, dass die TextBox1 nicht nur eine asp Kontrolle ist, zu zeigen, dass es funktioniert):
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<input id="TextBox1" type="text" runat="server"/>
<asp:Literal ID="Literal1" runat="server" Visible="false"></asp:Literal>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</asp:Content>
Und der Code hinter:
protected void Page_Load(object sender, EventArgs e)
{
Literal1.Visible = true;
if (!IsPostBack) Literal1.Text = "<input id=\"TextBox2\" type=\"text\" runat=\"server\"/>";
}
Dies funktioniert Gut und beide Textfelder erscheinen auf dem Bildschirm, aber wenn ich einen Wert in beide eintippe und ein Postback nur den Wert von TextBox1 trage, wird beibehalten.
Ich habe versucht, meinen Code auf OnPreRender und OnPreLoad zu verschieben, aber immer noch das gleiche Problem.
Ich habe festgestellt, dass, wenn ich die Seitenquelle anzeigen TextBox1 hat eine UniqueId (z. B. ctl00 $ MainContent $ TextBox1), während Textbox2 immer noch runat="server"
als Attribut hat.
Es ist ein Legacy-Produkt an d Die Haut wird als HTML-Rohdatei injiziert, ich weiß nicht, wie ich sie analysieren soll – Newm