Saya telah mencoba dua cara: Response.Redirect () yang tidak melakukan apa-apa, serta memanggil metode baru di dalam Pengontrol Dasar yang mengembalikan ActionResult dan mengembalikannya RedirectToAction () ... tidak satu pun dari pekerjaan ini.
Bagaimana saya bisa melakukan redirect dari metode OnActionExecuting?
c#
asp.net-mvc
onactionexecuting
CloudMeta
sumber
sumber
new RedirectResult(url)
Anda juga bisa menggunakannew RedirectToAction(string action, string controller)
. Ini mungkin telah ditambahkan ke MVC setelah Anda memposting jawaban Anda. Solusi Anda menempatkan saya di jalur yang benar.new
) RedirectToAction:filterContext.Result = RedirectToAction(string action, string controller);
Ini dapat dilakukan dengan cara ini juga:
sumber
Buat kelas yang terpisah,
Kemudian, Saat Anda membuat pengontrol, panggil anotasi ini sebagai
sumber
RouteValueDictionary
ini untuk konstruktor karena mencerminkan perutean di tempat lain di MVC. +1Jika pengalihan diarahkan mewarisi dari tempat yang sama di
baseController
mana kita menimpaOnActionExecuting
metode menyebabkan loop rekursif. Misalkan kita mengarahkannya ke tindakan masuk dari pengontrol akun, maka tindakan masuk akan memanggilOnActionExecuting
metode dan dialihkan ke tindakan masuk yang sama lagi dan lagi ... Jadi kita harus menerapkan metode check inOnActionExecuting
untuk memeriksa cuaca permintaan dari pengontrol yang sama jika jadi jangan mengarahkan kembali tindakan login itu. ini kodenya:override yang dilindungi.
sumber