Jaki jest elegancki sposób wykorzystania istniejących atrybutów [HandleError] i [Authorize] podczas obsługi wywołań XHR z javascript?asp.net mvc [handleerror] [autoryzuj] z JsonResult?
Powiedzmy na przykład o metodzie GetJson, która zwraca wartość JsonResult.
Po wystąpieniu błędu metoda [HandleError] odeśle widok ViewResult, który zostanie odzyskany w funkcji wywołania zwrotnego w javascript.
bym wtedy trzeba umieścić kod niestandardowy wszędzie w javascript w obsłudze i przekierowywać żadnych awarii itp
Co chciałbym zrobić, to mieć [HandleError] przypisują zwrócić JsonResult Jeśli oryginał działanie planowało to zrobić. To może być myślenie życzeniowe z mojej strony.
Podobnie, jeśli pojawi się nieautoryzowane żądanie Json, zamiast zwracania nowego HttpUnauthorizedResult, chciałbym zwrócić JsonResult, który pozwala mojemu kodowi po stronie klienta na obsługę rzeczy w zwykły sposób.
Czy szczerzę tu niewłaściwe drzewo? Może jest jeszcze lepszy sposób, w jaki MVC może sobie z tym poradzić, czego nie jestem świadomy?
W jaki sposób inne osoby obsługują ten scenariusz?
Dzięki.
PS: Rozumiem, że mogę stworzyć własne atrybuty [HandleJsonError] i [AuthorizeJson], które zwrócą JsonResults zamiast ViewResults, ale wtedy będę musiał je obejść i umieścić na dowolnej metodzie zwracającej Json, i martwić się Kolejność filtrowania itp. Byłoby dobrze, gdybym mógł użyć odbicia lub czegoś, co miałoby ten sam atrybut, gdyby działał inaczej, w zależności od podpisu oryginalnej metody.
Dzięki! Request.IsAjaxRequest() jest bardzo pomocny. Nie wiedziałem, że to istnieje. – Scott
Jest to metoda rozszerzenia, którą dodaje MVC. To w rzeczywistości nie jest częścią Żądania. –
Dzięki! To bardzo elegancki sposób i powinien być oznaczony jako poprawna odpowiedź. Konstruktor nie jest jednak potrzebny. –