internal sealed override Column PerformTranslateTo(Model model) { Debug.Assert(model != null); if (ParentModel != null) { if (model == ParentModel) { return(this); } if (model.GetType() != ParentModel.GetType()) { throw new ArgumentException(DiagnosticMessages.Column_TranslateToModelTypeMismatch, nameof(model)); } if (IsLocal) { return(model.LocalColumns[Ordinal]); } else { return(model.Columns[Ordinal]); } } var translatedExpression = Expression.PerformTranslateTo(model); if (Expression == translatedExpression) { return(this); } var result = (Column <T>)Activator.CreateInstance(GetType()); translatedExpression.SetOwner(result); return(result); }
public void GetSelectorMetadataTest() { var model = new GridModel(); var parentModel = new ParentModel(); var modelMetadata = System.Web.Mvc.ModelMetadataProviders.Current.GetMetadataForProperties(model, model.GetType()); var parentModelPropertyMetadata = System.Web.Mvc.ModelMetadataProviders.Current.GetMetadataForProperties(parentModel, parentModel.GetType()); var parentModelPropertiesMetadata = parentModelPropertyMetadata as List <ModelMetadata> ?? parentModelPropertyMetadata.ToList(); var modelPropertiesMetadata = modelMetadata as List <ModelMetadata> ?? modelMetadata.ToList(); ModelMetadata actual = GridHelper.GetSelectorMetadata(modelPropertiesMetadata.FirstOrDefault(), modelPropertiesMetadata, parentModelPropertiesMetadata.FirstOrDefault(), parentModelPropertiesMetadata); Assert.IsNull(actual); var s = parentModelPropertiesMetadata.First(p => p.PropertyName == "SingleSelectGrid"); ModelMetadata actual1 = GridHelper.GetSelectorMetadata(modelPropertiesMetadata.FirstOrDefault(), modelPropertiesMetadata, s, parentModelPropertiesMetadata); Assert.IsNotNull(actual1); Assert.IsTrue(actual1.ContainerType == typeof(ParentModel)); var m = parentModelPropertiesMetadata.First(p => p.PropertyName == "MultipleSelectGrid"); ModelMetadata actual2 = GridHelper.GetSelectorMetadata(modelPropertiesMetadata.FirstOrDefault(), modelPropertiesMetadata, m, parentModelPropertiesMetadata); Assert.IsNotNull(actual2); Assert.IsTrue(actual2.ContainerType == typeof(GridModel)); }
public void GetSelectionTypeTest() { var model = new GridModel(); var parentModel = new ParentModel(); var modelMetadata = System.Web.Mvc.ModelMetadataProviders.Current.GetMetadataForProperties(model, model.GetType()); var parentModelPropertyMetadata = System.Web.Mvc.ModelMetadataProviders.Current.GetMetadataForProperties(parentModel, parentModel.GetType()); var modelPropertyMetadata = parentModelPropertyMetadata as List <ModelMetadata> ?? parentModelPropertyMetadata.ToList(); var d = modelPropertyMetadata.First(p => p.PropertyName == "DisplayGrid"); var modelMetadatas = modelMetadata as List <ModelMetadata> ?? modelMetadata.ToList(); SelectionType actual = GridHelper.GetSelectionType(modelMetadatas.FirstOrDefault(), d); Assert.AreEqual(SelectionType.None, actual); var s = modelPropertyMetadata.First(p => p.PropertyName == "SingleSelectGrid"); actual = GridHelper.GetSelectionType(modelMetadatas.FirstOrDefault(), s); Assert.AreEqual(SelectionType.Single, actual); var m = modelPropertyMetadata.First(p => p.PropertyName == "MultipleSelectGrid"); actual = GridHelper.GetSelectionType(modelMetadatas.FirstOrDefault(), m); Assert.AreEqual(SelectionType.Multiple, actual); }