Validátor ASCX-ben

Az ASP.NET 2.0 óta be lehet állítani, hogy melyik validátor milyen gomb megnyomása esetén ellenőrizzen. Ez egy nagyon hasznos tulajdonság: lehetővé teszi, hogy két feltöltő/szerkesztő felület is lehessen egy oldalon, amik mind validáltak, és nem szólnak bele egymás életébe. Azt, hogy mely validátorok tartoznak egy csoportba, és mely gombokra aktivizálódnak a ValidationGroup propertyjben lehet megadni. Azonos ValidationGroup = közös működés. A gond akkor kezdődik, ha többször felhasznált oldal-elemeket készítünk, például ASCX-eket. Ekkor ugyanis, ha több azonos típusú ASCX-et teszünk egy oldalra (pl.: sok FileFeltoltes.ascx-et), akkor azok gyermekvezérlői és validátorai egyszerre izgulnak – mármint mindegyik ASCX-é egyszerre (így csak akkor lehet egy fájlt feltölteni, ha mindegyik FileFeltoltes.ascx valid).

A probléma oka, hogy az ASCX-ekről az oldalba bekerülő vezérlők ValidationGroupja azonos, emiatt azok egyszerre aktivizálódnak. Az ütközésfeloldáshoz ezt a ValidationGroup egyezést kell megszüntetni. Az egyik lehetséges módszer, hogy az ASCX-eken lévő vezérlők ValidationGroupjába belekódoljuk az ASCX azonosítóját. Ekkor a különböző nevű ASCX-ek validátorai különböző esetekben aktivizálódnak. Ez a belekódolás csak futási időben tehető meg, egy lehetséges implementációt mutat az alábbi kódrészlet:

<asp:TextBox ID="EvTextBox" runat="server"
    Text='<%# Bind("Ev") %>'
    CssClass="rovid"
    ValidationGroup='<%# "Update_" + this.ID %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
    ErrorMessage="*"
    ValidationGroup='<%# "Update_" + this.ID %>'
    ControlToValidate="EvTextBox" />
<asp:Button ID="Button3" runat="server" Text="Módosítás"
    CausesValidation="true"
    ValidationGroup='<%# "Update_" + this.ID %>'
    CommandName="Update" />


Dávid Zoltán

Dávid Zoltán Mérnök Informatikusként végeztem a BME-n, jelenleg webfejlesztéssel és gépi tanulással foglalkozom.

2010.03.10. 20:00:01 | Permalink | Hozzászólások: 0 | Tárgyszavak:


  • UpdatePanel - akkor hogy is van ez?

    Biztos sokan láttatok már ilyen-olyan tutorial videókat, mint például ez is, ami az ASP.NET alkalmazások AJAXosítása kapcsán mindösszesen arról szól, hogy tegyünk bele mindent UpdatePanel-be, és készen is vagyunk. Kétségtelenül egyszerű, kétségtelenül működik is, de vajon tényleg ez a legjobb megoldás? Tovább »
  • Excel export ASP.NET-ből

    Balássy György (MS RD, ASP.NET MVP, MCTS) Gyakori feladat, hogy a webalkalmazásaink adatbázisából valamilyen használható formátumban kell adatokat exportálnunk. Egy átlagos felhasználó számára a relációs adatok használható formátuma az Excel. Íme néhány módszer Excel fájl előállítására ASP.NET-ből. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások