Saya memiliki halaman master bersama yang saya gunakan dari 2 area berbeda di aplikasi mvc 2 saya. Halaman master memiliki tautan tindakan yang saat ini menentukan pengontrol dan tindakan, tetapi tentu saja tautan itu tidak berfungsi jika saya berada di area yang salah. Saya melihat tidak ada overload untuk actionlink yang mengambil parameter area, apakah itu mungkin dilakukan?
156
Sesuatu yang saya temui tepat setelah ini, yang saya bayangkan orang lain mungkin temui: Jika Anda perlu menautkan dari dalam suatu area ke tindakan yang tidak ada dalam suatu area, Anda masih perlu menentukan Area sebagai string kosong.
Sebagai contoh, saya memindahkan beberapa kode MVC ke suatu area, dan menemukan saya perlu memperbarui url di halaman master yang mereferensikan halaman lain di situs.
Untuk menentukan url ke sesuatu yang tidak ada di suatu wilayah, gunakan
sumber
Menggunakan:
Catatan : parameter ke-4 adalah untuk melewati rute
Values
, jika Anda melewatkan parameter kosong maka akan mempertimbangkan struktur root dan jika Anda memberikan nilai yang sesuai, gunakan sebagai area.Juga jangan lupa untuk menggunakan
null
ataunew{}
sebagai parameter ke-5 karena melewatinull
ataunew {}
saat membuat tautan tindakan tidak akan membebani metode untuk(text,action,controller,route data)
atau(text,action,controller,route data,html attribute)
jadi gunakan metode yang tepatsumber
Dalam pemberian MVC2
area="root"
bekerja untuk saya seperti di bawah inisumber
Trik rapi yang dapat Anda lakukan jika Anda menggunakan area yang banyak di Tampilan adalah mendefinisikannya sebagai variabel di atas:
sumber
Inilah yang saya kemukakan sebagai solusi untuk memungkinkan pengguna menautkan ke sistem otentikasi yang dibuat sebelumnya.
Setiap area saya memiliki versi file _LoginPartial.cshtml.
Saya mungkin bisa mendapatkan aplikasi untuk menggunakan versi file tunggal, namun saya terus mengalami kesalahan ketika mencoba menggunakan parsial login tunggal.
Ini hanya sedikit modifikasi pada loginpartial asli yang dihasilkan, tetapi tampaknya berfungsi dengan baik ketika digunakan di area tertentu.
Berikut adalah kode yang digunakan di dalamnya:
sumber
htmlAttributes:
bekerja dengan sangat baik untuk menggunakan beberapa parameter.Jika Anda tidak dapat menggunakan tautan aplikasi web standar seperti About, Home, Contac dll dari area. Anda mengubah baris
dari
Tampilan \ Shared_Layout.cshtml
sumber
Di aplikasi ASP Net Core saya, saya cukup menambahkan area ke atribut html seperti:
sumber
Menggunakan
Akan mencapai apa yang Anda cari.
DisplayText adalah apa yang akan ditampilkan (sama seperti
<a href="#">DisplayText</a>
), ActionName adalah metode yang dipanggil dalam controller dan ControllerName jelas merupakan controller yang ingin Anda panggil! Parameter berikutnya adalah 'Nilai Rute' tempat Anda akan menambahkan area Anda. Jika Anda saat ini berada di suatu Area dan ingin menavigasi kembali ke root AndaHome/Index
misalnya, Anda akan meninggalkan nilai sebagai string kosong, misalnyanew { area = ""}
. Nilai akhir adalah 'Atribut Html' dan di mana Anda akan menambahkan kelas jika Anda mau dan harus menjadinull
jika tidak memiliki atribut untuk ditambahkan. Tetapi sebagai parameter terakhir dilihat sebagai 'Atribut Html'; agar Nilai Rute diakui, ini harusnull
sumber