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:


  • WSSv3 @ WS08 screencast

    Balássy György (MS RD, ASP.NET MVP, MCTS) A Windows Server 2008 megjelenésével jogosan merül fel az igény, hogy Windows SharePoint Servicest használjunk rajta. A WSS továbbra is jogilag a Windows Serverhez tartozik, a telepítő lemezen azonban nem található meg és az új operációs rendszeren bizony a telepítése is kicsit más előkészületeket igényel, nem utolsó sorban az új webszerver, az IIS 7 miatt. Tovább »
  • Statikus weboldal elhelyezése Azure BLOB-ban

    Dávid Zoltán Elnézve az Azure árakat, egy weboldalnyi adat tárolása az azure storageben gyakorlatilag ingyen van. Ha ehhez hozzáveszem, hogy az azure storage tartalma HTTP-n keresztül elérhető, és hogy nem kell aggódni a rendelkezésreállás és a sávszélesség miatt, akkor egyből arra gondolok, hogy statikus weboldalakat azure storageba tenni jó ötlet. Nézzük mik a lehetséges buktatók, és megoldásaik. 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