2009-05-13 11 views
5

Sto utilizzando JQuery per caricare i controlli dinamicamente in un ambiente di sviluppo ASP.NET utilizzando JSON e WebServices. All'interno di questa soluzione ho un livello di logica aziendale che ha un meccanismo di validazione incorporato (ovvero convalida di proprietà e regole aziendali simili a quello di CSLA)Estendere l'eccezione generata da ASP.NET quando si chiama un servizio Web da JQuery

Quando si richiede il caricamento dinamico di un nuovo controllo utilizzando JQuery e un servizio Web ASP.NET , Vorrei convalidare l'input dal controllo corrente contro il meccanismo di convalida della logica di business (ad esempio la validazione lato server) e notificare all'utente se ci sono stati problemi.

Sono riuscito a raggiungere questo, tuttavia, quando la convalida non riesce nel servizio web vorrei lanciare un'eccezione del cliente contenente l'id del campo di validazione e i messaggi di errore associati.

In JQuery, eseguo il test per questo specifico ExceptionType e desidero applicare i messaggi di errore in modo dinamico ai controlli elencati nelle proprietà del tipo di eccezione. È qui che entra in gioco il mio problema. Anche se ho creato un'eccezione personalizzata con proprietà personalizzate, l'eccezione passata a JQuery in formato JSON dal WebService è ancora un'eccezione standard con nessuna delle proprietà aggiuntive elencate. Potrei semplicemente creare una stringa di valori formattata JSON nella proprietà del messaggio dell'eccezione, ma alla fine preferirei qualcosa di un po 'più elegante. Qualcuno sa come si può ignorare l'eccezione serializzato creato da ASP.NET per situazioni come questa ...

Grazie in anticipo ...

G

+0

Mi piacerebbe anche sapere la risposta a questo. –

+3

quindi vota la domanda: p – womp

risposta

3

mi sono imbattuto in qualcosa di molto simile a un paio di giorni fa - in pratica non c'è modo di fare in modo che ASP.NET generi eccezioni personalizzate. Questo è by design, da quando è tornato un tipo specifico di eccezioni sarebbe

[...] esporre implementazione dettagli/bug ai clienti. Potremmo fare qualcosa con particolare eccezione tipo che abbiamo lasciato passare, ma la sua troppo tardi per questa versione [...]

You could always return different HTTP status codes, e li hanno gestire il browser come eccezioni personalizzate - per esempio, un errore di 500 significherebbe una cosa, un 401 qualcos'altro, ecc. Penso che la soluzione migliore sia far sì che il metodo restituisca una stringa con lo stack delle eccezioni - non elegante, ma almeno in questo modo il client ha tutti i dettagli delle eccezioni.

Dave Ward ha anche informazioni su ASP.NET AJAX service errors.

+0

Grazie Gabriel ... Questo mi aiuta davvero ... G –

+0

FYI a tutti, ho ottenuto un blocco di 'dodgy page' quando sono andato al link di Dave Ward. –

+0

Huh, interessante - Anch'io. È un peccato. –