Qual è un modo elegante per sfruttare gli attributi [HandleError] e [Autorizza] esistenti quando si gestiscono chiamate XHR da javascript?asp.net mvc [handleerror] [autorizzazione] con JsonResult?
Quindi, ad esempio, un metodo GetJson che restituisce un JsonResult.
Quando si verifica un errore, il metodo [HandleError] invierà un ViewResult che verrà recuperato nella funzione di callback in javascript.
avrei poi dovuto inserire codice personalizzato in tutto il mondo in javascript per gestire e reindirizzare eventuali incidenti, ecc
Quello che mi piacerebbe fare, è avere il [HandleError] attributo restituisce un JsonResult se l'originale l'azione prevedeva di farlo. Questo potrebbe essere un pio desiderio da parte mia.
Analogamente, se arriva una richiesta JSON non autorizzata, invece di restituire un nuovo HttpUnauthorizedResult, desidero restituire un JsonResult che permetta al mio codice lato client di gestire le cose in un modo comune.
Sto abbaiando sull'albero sbagliato qui? Forse c'è un modo ancora più bello in cui MVC può gestire ciò di cui non sono a conoscenza?
In che modo le altre persone gestiscono questo scenario?
Grazie.
PS: Mi rendo conto che posso creare i miei attributi [HandleJsonError] e [AuthorizeJson] che restituiscono JsonResults invece di ViewResults, ma poi dovrei andare in giro e posizionarli su qualsiasi metodo che restituisce Json, e preoccuparmi di Ordine filtro ecc. Sarebbe bello se potessi usare la riflessione o qualcosa del genere per fare in modo che lo stesso attributo agisse in modo diverso a seconda della firma del metodo originale.
Grazie! Request.IsAjaxRequest() è molto utile. Non sapevo che esistesse. – Scott
È un metodo di estensione che MVC aggiunge. In realtà non fa parte della richiesta. –
Grazie! Questo è un modo molto elegante e dovrebbe essere contrassegnato come la risposta corretta. Il costruttore non è necessario però. –