c# - Clear the ViewBag? -
is there way clear viewbag
?
viewbag
has no setter, can't nulled out:
viewbag = null;
i can't seem use reflection iterate on , wipe out dynamic properties, can't create instance of dynamic
.
note: know viewbag
on own bit of code smell it's not typed, , giant collection of global variables. , we're moving away it, still need deal in meantime.
you can call
viewdata.clear();
as viewbag uses internally.
here working example - https://dotnetfiddle.net/gmxcti . if uncomment commented line, displayed text cleared
here current implementation viewbag in mvc:
public dynamic viewbag { { if (_dynamicviewdatadictionary == null) { _dynamicviewdatadictionary = new dynamicviewdatadictionary(() => viewdata); } return _dynamicviewdatadictionary; } }
and part of dynamicviewdatadictionary
// implementing function improves debugging experience provides debugger list of // properties defined on object public override ienumerable<string> getdynamicmembernames() { return viewdata.keys; } public override bool trygetmember(getmemberbinder binder, out object result) { result = viewdata[binder.name]; // since viewdatadictionary returns result if key not exist, return true return true; } public override bool trysetmember(setmemberbinder binder, object value) { viewdata[binder.name] = value; // can set key in dictionary return true return true; }
so can see depends on viewdata
object
Comments
Post a Comment