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;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)