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:


  • Amikor a ListView nem az igazi

    Balássy György (MS RD, ASP.NET MVP, MCTS) Az ASP.NET-ben megjelent ListView vezérlő igazi főnyeremény, tud mindent, amit kell, kézbentartható vele a generált HTML kód, ráadásul van hozzá designer támogatás is a Visual Studioban. Csak éppen vízfejűbb, mint bármely más listás adatmegjelenítő vezérlő. Tovább »
  • PDB fájlok a webszerveren

    Balássy György (MS RD, ASP.NET MVP, MCTS) Nemrég készítettem egy webalkalmazást, ami egy solutionben volt egy Class Library típusú projekttel. Fordítgatás után feltűnt, hogy Release módban is ott virít a bin mappában az osztálykönyvtár DLL-jéhez tartozó PDB fájl. Vajon kell ez egy production szerverre? 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