C# 如何使用自动类型转换创建模型绑定器

C# 如何使用自动类型转换创建模型绑定器,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我需要一个模型绑定器,它循环一个类型的所有属性(通过反射),并将值赋给该属性。我是这样做的: public class ModuleModelBinder : DefaultModelBinder { protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) {

我需要一个模型绑定器,它循环一个类型的所有属性(通过反射),并将值赋给该属性。我是这样做的:

public class ModuleModelBinder : DefaultModelBinder
    {
        protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
        {

            var m = UtilityModuli.GetAllVociModuli().Where(x => x.TableName == "Materiali").FirstOrDefault();

            var entity = m.Tipo.GetConstructor(new Type[] { }).Invoke(new object[] { });

            foreach (var prop in m.Tipo.GetProperties())
            {
                var propValue = bindingContext.ValueProvider.GetValue("Row."+prop.Name);
                if (propValue != null && !string.IsNullOrEmpty(propValue.AttemptedValue))
                {
                    var value = propValue.AttemptedValue;
                    entity.GetType().GetProperty(prop.Name).SetValue(entity, value);
                }
            }

            bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => entity, entity.GetType());
            return entity;
        }
    }
但当我试图为int设置值时,我会得到一个错误,因为我试图输入一个字符串

将从bindingContext.ValueProvider.GetValue(“Row.”Prop.Name+)获取的数据转换为正确类型的最佳方法是什么?

答案是调用“ConvertTo”方法

var valueRaw = propValue.ConvertTo(prop.PropertyType);
entity.GetType().GetProperty(prop.Name).SetValue(entity, valueRaw);