Asp.net
ASP.NET MVC 中的 ViewBag 是如何工作的
ASP.NET MVC 是如何
ViewBag工作的?MSDN 說它只是一個Object,這讓我很感興趣,“魔術”屬性如ViewBag.Foo和 魔術字元串ViewBag["Hello"]實際上是如何工作的?另外,如何製作一個並在我的 ASP.NET WebForms 應用程序中使用它?
例子將不勝感激!
ViewBag是類型dynamic,但是,在內部是System.Dynamic.ExpandoObject()它是這樣聲明的:
dynamic ViewBag = new System.Dynamic.ExpandoObject();這就是為什麼你可以這樣做:
ViewBag.Foo = "Bar";範例擴展器對象程式碼:
public class ExpanderObject : DynamicObject, IDynamicMetaObjectProvider { public Dictionary<string, object> objectDictionary; public ExpanderObject() { objectDictionary = new Dictionary<string, object>(); } public override bool TryGetMember(GetMemberBinder binder, out object result) { object val; if (objectDictionary.TryGetValue(binder.Name, out val)) { result = val; return true; } result = null; return false; } public override bool TrySetMember(SetMemberBinder binder, object value) { try { objectDictionary[binder.Name] = value; return true; } catch (Exception ex) { return false; } } }