Exemple #1
0
        // A variant of TemplateRenderer.GetViewNames(). Main change relates to bool? handling.
        private static IEnumerable <string> GetInputTypeHints(ModelExplorer modelExplorer)
        {
            var inputTypeHints = new string[]
            {
                modelExplorer.Metadata.TemplateHint,
                modelExplorer.Metadata.DataTypeName,
            };

            foreach (string inputTypeHint in inputTypeHints.Where(s => !string.IsNullOrEmpty(s)))
            {
                yield return(inputTypeHint);
            }

            // In most cases, we don't want to search for Nullable<T>. We want to search for T, which should handle
            // both T and Nullable<T>. However we special-case bool? to avoid turning an <input/> into a <select/>.
            var fieldType = modelExplorer.ModelType;

            if (typeof(bool?) != fieldType)
            {
                fieldType = modelExplorer.Metadata.UnderlyingOrModelType;
            }

            foreach (string typeName in TemplateRenderer.GetTypeNames(modelExplorer.Metadata, fieldType))
            {
                yield return(typeName);
            }
        }
Exemple #2
0
        /// <summary>
        /// 入力するデータの型のヒントリストを取得する
        /// 基本的に「InputTagHelper」の実装をそのまま利用している
        /// </summary>
        /// <returns>バインドしているデータ型のヒントリスト</returns>
        protected IEnumerable <string> GetInputValueTypeHints()
        {
            var modelExplorer = For.ModelExplorer;

            // テンプレートヒントが有ればそれをリストにして返す
            if (!string.IsNullOrEmpty(modelExplorer.Metadata.TemplateHint))
            {
                yield return(modelExplorer.Metadata.TemplateHint);
            }

            // データタイプ名が有ればそれをそれをリストにして返す
            if (!string.IsNullOrEmpty(modelExplorer.Metadata.DataTypeName))
            {
                yield return(modelExplorer.Metadata.DataTypeName);
            }

            // In most cases, we don't want to search for Nullable<T>. We want to search for T, which should handle
            // both T and Nullable<T>. However we special-case bool? to avoid turning an <input/> into a <select/>.
            var fieldType = modelExplorer.ModelType;

            if (typeof(bool?) != fieldType)
            {
                fieldType = modelExplorer.Metadata.UnderlyingOrModelType;
            }

            foreach (var typeName in TemplateRenderer.GetTypeNames(modelExplorer.Metadata, fieldType))
            {
                yield return(typeName);
            }
        }
Exemple #3
0
        public void GetTemplateNames_WithNoRegression(Type fieldType)
        {
            // Arrange
            var metadata = _metadataProvider.GetMetadataForType(fieldType);
            var expected = TemplateRenderer.GetTypeNames(metadata, metadata.UnderlyingOrModelType);

            // Act
            var actual = _templateNameSource.GetTemplateNames(metadata);

            // Assert
            actual.Should().BeEquivalentTo(expected, cfg => cfg.WithStrictOrdering());
        }
    public void GetTypeNames_ReturnsExpectedResults(Type fieldType, string[] expectedResult)
    {
        // Arrange
        var metadataProvider = new TestModelMetadataProvider();
        var metadata         = metadataProvider.GetMetadataForType(fieldType);

        // Act
        var typeNames = TemplateRenderer.GetTypeNames(metadata, fieldType);

        // Assert
        var collectionAssertions = expectedResult.Select <string, Action <string> >(expected =>
                                                                                    actual => Assert.Equal(expected, actual));

        Assert.Collection(typeNames, collectionAssertions.ToArray());
    }
        /// <summary>
        /// Gets the input type hints.
        /// </summary>
        /// <param name="modelExplorer">The model explorer.</param>
        /// <returns></returns>
        protected static IEnumerable <string> GetInputTypeHints(ModelExplorer modelExplorer)
        {
            if (!string.IsNullOrEmpty(modelExplorer.Metadata.TemplateHint))
            {
                yield return(modelExplorer.Metadata.TemplateHint);
            }

            if (!string.IsNullOrEmpty(modelExplorer.Metadata.DataTypeName))
            {
                yield return(modelExplorer.Metadata.DataTypeName);
            }

            var fieldType = modelExplorer.ModelType;

            if (typeof(bool?) != fieldType)
            {
                fieldType = modelExplorer.Metadata.UnderlyingOrModelType;
            }

            foreach (var typeName in TemplateRenderer.GetTypeNames(modelExplorer.Metadata, fieldType))
            {
                yield return(typeName);
            }
        }