ASP.NET Web Forms: Fájlfeltöltés submit után üres a path
2020-09-11T10:10:42+02:00
2020-09-13T10:13:26+02:00
2022-07-19T01:10:32+02:00
BIG W
Sziasztok!

Van egy részfeladatom, amit szerveroldali validálás miatt kell megvalósítanom web forms-ban.
Adott egy form, aminek paramétereit el kell menteni egy adatbázisba, ebben van egy FileUpload objektum, és a fájlhoz egy képet render-elő Panel objektum. OnChange esemény van rákötve a FileUpload-ra. Fájlkiválasztás hatására az OnChange-ben egy javascript kód egy form submit-ot küld, amit a CustomValidator OnServerValidate-je lekezel, és args.IsValid = FileUpload.HasFile; kóddal kiértékeli, hogy valid-e a form.
A probléma az, hogy ez még nem a mentés része, a fileupload submit után az oldal frissül, a kép ugyan kirenderelődik, de mentés előtt már a FileUpload.PostedFile kiürül, és mentéskor még egyszer lefut az OnServerValidate, és a HasFile paramétere pedig false lesz, így a mentés sajnos nem megy végbe.
Kérdés a következő: Hogyan lehet rávenni onchange submit és refresh után, hogy a FileUpload a fájlt megtartsa, és hogy a mentést is végre lehessen hajtani?

Köszönöm a választ!
Mutasd a teljes hozzászólást!
Meglett a megoldás: Felvettem egy static bool változót, ami az IsValidated nevet kapta, majd ezt felhasználtam a CustomValidator OnServerValidate-jében feltételként: Ha már egyszer validálva volt a CustomValidator-ban, akkor mentést követően már nem kell újravalidálni.
Mutasd a teljes hozzászólást!

  • Lehet, hogy félreértek valamit, de ez nem megoldásnak hangzik, hanem egy workaround-nak, amivel egy veszélyes bugot hozol létre.

    A static IsValidated változód egy megosztott közös változó, önálló élettartammal. Mihelyt többen használják az alkalmazásodat, össze-vissza fog keveredni az értéke.

    Ezen kívül ha true-ra állítod egy sikeres validálást követően a következő felhasználó is a true értéket fogja látni, függetlenül attól, hogy van-e file vagy nincs.

    Kérdés a következő: Hogyan lehet rávenni onchange submit és refresh után, hogy a FileUpload a fájlt megtartsa, és hogy a mentést is végre lehessen hajtani?

    Már elég rég Web Forms-oztam, úgyhogy nem állítom, hogy csípőből tudnék javaslatot adni, de ide valami Ajax-os megoldás kéne, ami Web Forms-nál elég macera, Ajax Control Toolkit UpdatePanel-ja segíthet esetleg, de nem tudom, hogy egyáltalán biztonságos-e még ezt használni.
    Mutasd a teljes hozzászólást!
  • Upsz...

    Sajnos az ajax nem játszik, mert rengeteg átírással járna az amúgy is kifutóban lévő projektben. (Az egész le lesz cserélve nem sokára, ez már csak foltozás a tortán).

    Az UpdatePanel-t köszi, megnézem holnap.

    Üdv,
    W.
    Mutasd a teljes hozzászólást!
abcd