C#: primul formular web cu ASP.NET Web Forms
Înțelege ciclul unei pagini ASP.NET Web Forms printr-un exemplu C# local. Creează controale cu ID stabil și codifică textul utilizatorului la afișare.
În acest material
O aplicație web nu păstrează aceeași fereastră vie ca Windows Forms. Browserul trimite cereri, iar serverul reconstruiește pagina și produce HTML. Pentru a lega pregătirea desktop de un modul web, folosim ASP.NET Web Forms pe .NET Framework 4.8, într-un proiect local Windows cu IIS Express. Acesta este un model diferit de ASP.NET Core.
Cum lucrezi cu exemplul
Arhiva conține un Web Site ASP.NET Web Forms pentru .NET Framework 4.8: Default.aspx, Web.config și clasa din App_Code. Deschide ca Web Site în Visual Studio pe Windows și rulează local cu IIS Express. Nu este un proiect ASP.NET Core.
Descarcă sursele și instrucțiunile.
Ideea și pașii de implementare
Creează un ASP.NET Empty Web Site pentru .NET Framework 4.8. Pune clasa DemoPage în App_Code/DemoPage.cs și creează Default.aspx cu directiva Page care moștenește DemoPage, indicată în arhiva lecției. Controalele dinamice sunt recreate în OnInit, cu aceleași ID-uri la fiecare cerere, înainte de încărcarea datelor de postback.
OnLoad pune valoarea inițială numai dacă IsPostBack este false. Altfel ai suprascrie textul trimis de utilizator. Handler-ul butonului construiește răspunsul folosind HttpUtility.HtmlEncode, astfel încât textul să fie prezentat ca date, nu interpretat drept marcaj HTML.
Exemplu și rezultat așteptat
La prima cerere apare Ana în câmp. Schimbi în Mihai și trimiți formularul: pagina răspunde Salut, Mihai. Reîncărcarea și trimiterea sunt cereri distincte, nu apeluri pe aceeași instanță permanentă a paginii. Nu există salvare în baza de date.
Cerere inițială → OnInit: aceleași ID-uri → Postback: textul utilizatorului → HtmlEncode → răspuns HTML.Mărește schema ↗
Codul complet
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
public class DemoPage : Page {
TextBox input;Literal output;
protected override void OnInit(EventArgs e) {
base.OnInit(e);var form=new HtmlForm {ID="mainForm"};
input=new TextBox {ID="nameInput",MaxLength=80};var submit=new Button {ID="submit",Text="Saluta"};
output=new Literal {ID="result"};submit.Click += Submit;
form.Controls.Add(new Literal {Text="Nume: "});form.Controls.Add(input);form.Controls.Add(submit);form.Controls.Add(output);
Controls.Add(form);
}
protected override void OnLoad(EventArgs e) {base.OnLoad(e);if(!IsPostBack)input.Text="Ana";}
void Submit(object sender,EventArgs e) {
string name=input.Text.Trim();
output.Text=name.Length==0 || name.Length>80 ? "Introdu un nume de 1–80 de caractere." : "Salut, " + HttpUtility.HtmlEncode(name);
}
}
Greșeli și limite
Nu pune parole sau date private în query string. Nu considera validarea din browser suficientă. Nu dezactiva mecanismele de validare ASP.NET doar pentru a accepta un exemplu cu markup; păstrează codificarea la ieșire și tratează cerințele de intrare separat. Nu promite că un proiect Web Forms poate rula ca ASP.NET Core prin schimbarea numelui.
Exersează
Testează prima încărcare, postback-ul cu alt nume și trimiterea unui șir gol. Verifică sursa HTML și identifică formularul produs. Adaugă o limită de 80 de caractere și aplic-o și pe server. Explică de ce inițializarea necondiționată în OnLoad ar pierde editarea utilizatorului.
Continuă parcursul
Parcursul complet de 50 de lecții
Lecția precedentă: C#: proiect labirint cu BFS și drum desenat
Lecția următoare: C#: validare pe server și sesiune în Web Forms.
Referință: documentația Microsoft.
Întrebări frecvente
Web Forms este Windows Forms în browser?
Nu. Folosește cereri HTTP și ciclul paginii pe server, cu un model diferit de durată de viață.
De ce creez controalele în OnInit?
Pentru a le recrea stabil înainte de încărcarea datelor trimise la postback.
De ce codific textul la ieșire?
Pentru a-l afișa ca date, fără interpretarea lui drept HTML.
Un pas mai departe
Autentifică-te pentru a păstra progresul în cont.