mirror of https://github.com/abpframework/abp.git
6 changed files with 126 additions and 9 deletions
@ -0,0 +1,91 @@ |
|||||
|
using System; |
||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
|
||||
|
namespace Volo.Abp.ObjectExtending |
||||
|
{ |
||||
|
public static class ObjectExtensionPropertyInfoAspNetCoreMvcExtensions |
||||
|
{ |
||||
|
public static string GetInputType(this ObjectExtensionPropertyInfo propertyInfo) |
||||
|
{ |
||||
|
foreach (var attribute in propertyInfo.Attributes) |
||||
|
{ |
||||
|
var inputTypeByAttribute = GetInputTypeFromAttributeOrNull(attribute); |
||||
|
if (inputTypeByAttribute != null) |
||||
|
{ |
||||
|
return inputTypeByAttribute; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return GetInputTypeFromTypeOrNull(propertyInfo.Type) |
||||
|
?? "text"; //default
|
||||
|
} |
||||
|
|
||||
|
private static string GetInputTypeFromAttributeOrNull(Attribute attribute) |
||||
|
{ |
||||
|
if (attribute is EmailAddressAttribute) |
||||
|
{ |
||||
|
return "email"; |
||||
|
} |
||||
|
|
||||
|
if (attribute is UrlAttribute) |
||||
|
{ |
||||
|
return "url"; |
||||
|
} |
||||
|
|
||||
|
if (attribute is HiddenInputAttribute) |
||||
|
{ |
||||
|
return "hidden"; |
||||
|
} |
||||
|
|
||||
|
if (attribute is PhoneAttribute) |
||||
|
{ |
||||
|
return "tel"; |
||||
|
} |
||||
|
|
||||
|
if (attribute is DataTypeAttribute dataTypeAttribute) |
||||
|
{ |
||||
|
switch (dataTypeAttribute.DataType) |
||||
|
{ |
||||
|
case DataType.Password: |
||||
|
return "password"; |
||||
|
case DataType.Date: |
||||
|
return "date"; |
||||
|
case DataType.Time: |
||||
|
return "time"; |
||||
|
//TODO: Others..?
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
private static string GetInputTypeFromTypeOrNull(Type type) |
||||
|
{ |
||||
|
if (type == typeof(bool)) |
||||
|
{ |
||||
|
return "checkbox"; |
||||
|
} |
||||
|
|
||||
|
if (type == typeof(DateTime)) |
||||
|
{ |
||||
|
return "datetime-local"; |
||||
|
} |
||||
|
|
||||
|
if (type == typeof(int) || |
||||
|
type == typeof(long) || |
||||
|
type == typeof(byte) || |
||||
|
type == typeof(sbyte) || |
||||
|
type == typeof(short) || |
||||
|
type == typeof(ushort) || |
||||
|
type == typeof(uint) || |
||||
|
type == typeof(long) || |
||||
|
type == typeof(ulong)) |
||||
|
{ |
||||
|
return "number"; |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using System.Linq; |
||||
|
|
||||
|
namespace Volo.Abp.ObjectExtending |
||||
|
{ |
||||
|
public static class ObjectExtensionPropertyInfoExtensions |
||||
|
{ |
||||
|
public static ValidationAttribute[] GetValidationAttributes(this ObjectExtensionPropertyInfo propertyInfo) |
||||
|
{ |
||||
|
return propertyInfo |
||||
|
.Attributes |
||||
|
.OfType<ValidationAttribute>() |
||||
|
.Union(propertyInfo.ValidationAttributes) |
||||
|
.ToArray(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue