Bagaimana Anda mendapatkan nama area saat ini dalam tampilan atau pengontrol?
Apakah ada yang seperti ViewContext.RouteData.Values["controller"]
untuk area?
c#
asp.net-mvc
razor
pengguna202448
sumber
sumber
ASP.NET Core 1.0
bukanMVC6
.. :-)sumber
Anda bisa mendapatkannya dari controller menggunakan:
sumber
Di ASP.NET Core 1.0 nilainya ditemukan di
ViewContext.RouteData.Values ["area"];
sumber
pageModel.RouteData.Values.TryGetValue("area", out object area)
harus digunakan sebagai gantinya)Saya baru saja menulis entri log ab tentang ini , Anda dapat mengunjungi itu untuk lebih jelasnya, tetapi jawaban saya adalah membuat Metode Ekstensi, yang ditunjukkan di bawah ini.
Penendang kuncinya adalah Anda menarik Area MVC dari .DataTokens dan pengontrol / aksi dari .Values dari RouteData.
Kemudian Anda bisa menerapkannya seperti di bawah ini:
sumber
area
token diValues
tetapi perlu mencari diDataTokens
... tidak tahu kenapa.Saya membuat metode ekstensi untuk
RouteData
mengembalikan nama area saat ini.Karena
RouteData
tersedia di keduanyaControllerContext
danViewContext
dapat diakses di controller dan tampilan Anda.Ini juga sangat mudah untuk diuji:
Tidak perlu memeriksa apakah
RouteData.DataTokens
nol karena ini selalu diinisialisasi secara internal.sumber
MVC Futures memiliki metode AreaHelpers.GetAreaName (). Namun, berhati-hatilah jika Anda menggunakan metode ini. Menggunakan area saat ini untuk membuat keputusan runtime tentang aplikasi Anda dapat menyebabkan kode sulit-untuk-debug atau tidak aman.
sumber
this.GetName()
dan untuk penggunaan Metode saat iniMethodBase.GetCurrentMethod().Name
Saya tahu ini sudah tua, tetapi juga, ketika dalam filter seperti ActionFilter, konteksnya tidak mudah memberi Anda informasi area.
Itu dapat ditemukan dalam kode berikut:
Jadi filterContext diteruskan pada override dan RouteData yang benar ditemukan di bawah RequestContext. Ada RoutData di tingkat Basis, tetapi DataTokens TIDAK memiliki area dalam kamus itu.
sumber
Untuk mendapatkan nama area dalam tampilan, di ASP.NET Core MVC 2.1:
sumber
Dapatkan nama area di View (.NET Core 2.2):
sumber
Saya tahu ini adalah posting yang sangat sangat lama tetapi kita dapat menggunakan Properti Nilai persis dengan cara yang sama seperti DataTokens
Url.RequestContext.RouteData.Values ["action"] bekerja untuk saya.
sumber
Saya tidak tahu mengapa tetapi jawaban yang diterima tidak berfungsi. Mengembalikan null dengan misalnya (mungkin tentang MVC, saya menggunakan .net core)
Saya selalu men-debug variabel dan mengambil data dari dalamnya.
Coba ini. Ini bekerja untuk saya
Contoh logis terperinci
sumber