public static void SetKeyProvider(this ViewDataDictionary viewData, Func<object, object> keyProvider)
{
Contract.Requires<ArgumentNullException>(viewData != null);
Contract.Requires<ArgumentNullException>(keyProvider != null);
viewData["ViewContextExtensions.GetKey"] = keyProvider;
}