Bagaimana cara kerja ASP.NET MVC ViewBag
? MSDN mengatakan itu hanya Object
, yang membuat saya penasaran, bagaimana sifat "Sihir" seperti ViewBag.Foo
dan string ajaibViewBag["Hello"]
bekerja?
Selain itu, bagaimana cara membuatnya dan menggunakannya di aplikasi ASP.NET WebForms?
Contoh akan sangat dihargai!
asp.net
asp.net-mvc
viewbag
Aniket Inge
sumber
sumber
Jawaban:
ViewBag
adalah tipedynamic
tetapi, secara internal sebuahSystem.Dynamic.ExpandoObject()
Ini dinyatakan seperti ini:
dynamic ViewBag = new System.Dynamic.ExpandoObject();
itulah mengapa Anda bisa melakukan:
ViewBag.Foo = "Bar";
Contoh Kode Objek Expander:
sumber
public object ViewBag { get; }
pada halaman MSDN untuk ViewBag , tapi aku membeli klaim Anda bahwa itu sebuahExpandoObject
. Saya suka perbandingan dengan ViewData di sini : " Jadi pada dasarnya [ViewBag] menggantikan string ajaib [di ViewData] ... dengan properti ajaib ". ; ^)public object ViewBag { get; }
di MSDN, Kode mengatakan itudynamic ViewBag { get ..
yang secara internal adalah tipe DynamicViewDataIni adalah objek dinamis, artinya Anda dapat menambahkan properti ke dalamnya di pengontrol, dan membacanya nanti dalam tampilan, karena pada dasarnya Anda membuat objek seperti yang Anda lakukan, fitur tipe dinamis. Lihat artikel MSDN ini tentang dinamika. Lihat artikel ini ini tentang penggunaannya dalam kaitannya dengan MVC.
Jika Anda ingin menggunakan ini untuk formulir web, tambahkan properti dinamis ke kelas halaman dasar seperti:
Minta semua halaman Anda mewarisi dari ini. Anda harus dapat, dalam markup ASP.NET, melakukan:
Seharusnya itu berhasil. Jika tidak, ada cara untuk mengatasinya.
sumber
The
ViewBag
adalahSystem.Dynamic.ExpandoObject
seperti yang disarankan. Properti dalam padaViewBag
dasarnya adalahKeyValue
berpasangan, di mana Anda mengakses nilai dengan kunci. Dalam pengertian ini ini setara:sumber
ViewBag digunakan untuk meneruskan data dari Controller Action ke view untuk merender data yang diteruskan. Sekarang Anda bisa meneruskan data menggunakan antara Controller Action dan View baik dengan menggunakan ViewBag atau ViewData. ViewBag: Ini adalah jenis objek Dinamis, yang berarti Anda dapat menambahkan kolom baru ke viewbag secara dinamis dan mengakses kolom ini di Tampilan. Anda perlu menginisialisasi objek viewbag pada saat membuat kolom baru.
misal: 1. Membuat ViewBag: ViewBag.FirstName = "John";
sumber
ViewBag adalah tipe dinamis. Lebih dari itu, Anda tidak dapat melakukannya
ViewBag["Foo"]
. Anda akan mendapatkan pengecualian - Tidak dapat menerapkan pengindeksan dengan [] ke ekspresi jenis 'System.Dynamic.DynamicObject' .Implementasi internal
ViewBag
sebenarnya menyimpan Foo ke dalamViewData["Foo"]
(jenis ViewDataDictionary), sehingga keduanya dapat dipertukarkan.ViewData["Foo"]
danViewBag.Foo
.Dan ruang lingkup. ViewBag dan ViewData adalah ment untuk meneruskan data antara Tindakan Pengontrol dan View yang direndernya.
sumber
ViewBag adalah tipe dinamis yang memungkinkan Anda menyetel atau mendapatkan nilai secara dinamis dan memungkinkan Anda menambahkan sejumlah bidang tambahan tanpa kelas yang diketik dengan kuat. Mereka memungkinkan Anda untuk meneruskan data dari pengontrol ke tampilan. Dalam pengontrol ......
Dalam penglihatan
Apa yang saya pelajari adalah bahwa keduanya harus memiliki properti save dynamic name yaitu ViewBag.victor
sumber
sumber