Je možné povoliť validáciu v ASP.NET GridView čisto deklaratívne?
Čo som skúšal:
GridView viazaný na ObjectDataSource s definovanými SelectMethod a UpdateMethod
GridView obsahuje niektoré stĺpce ReadOnly BoundField a TemplateField, ktorého EditTemplate obsahuje TextBox a RegularExpressionValidator, ktorý umožňuje len numerické zadávanie v TextBoxe.
GridView obsahuje tiež CommandField s ShowEditButton = true a CausesValidation = true.
Ak kliknem na Upraviť, zadajte neplatnú hodnotu, potom kliknite na Uložiť, existuje PostBack a na serveri sa vyvolá výnimka (vstupný reťazec nebol v správnom formáte).
Tomu sa samozrejme môžem vyhnúť pridaním validáciekód do obsluhy udalostí RowUpdating na serveri (pozri nižšie), existuje však nejaký deklaratívny spôsob, ako vynútiť vykonanie validácie bez pridania tohto kódu?
protected void MyGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Page.Validate("MyValidationGroup");
if (!Page.IsValid)
{
e.Cancel = true;
}
}
odpovede:
0 pre odpoveď č. 1Potrebujete ten kód.
„Okrem spoliehania sa na overenie na strane klienta je tiež dôležité, aby ste pri spracovaní udalosti po odoslaní zavolali aj stránku Page.IsValid.“
http://weblogs.asp.net/rajbk/archive/2007/03/15/page-isvalid-and-validate.aspx
aktualizovať
Aby ste sa vyhli kódu na štítku kotla, mohli by ste mať všetkostránky zdedia zo základnej triedy a všetky ovládacie prvky používateľov zdedia z inej základnej triedy. Základná trieda bude mať spoločnú logiku (ako je uvedená vyššie). Potom ju musíte buď manuálne prepojiť alebo prejsť stromom ovládania a udalosti automaticky prepojiť.
Osobne by som sa však držal toho, čo v súčasnosti máte.