首页 > 解决方案 > 从 formcollection 值中设置不同类型的对象属性值

问题描述

嗨,我必须从 FormCollection 值中设置不同类型的对象值。我有这个方法:

public void EditProduct(string category, FormCollection formCollection) //Edit choosen product.
    {
        var product = GetNewProduct(category);
        var EfContext = GetEfContext(category);
        foreach (var property in product.GetType().GetProperties())
        {
            var NewValue = formCollection[property.Name];
            property.SetValue(product, NewValue);
        }
        EfContext.GetType().GetMethod("EditProduct").Invoke(EfContext, new object[] { product });
    }

但是我收到关于从字符串转换为其他类型的对象的错误。我该如何解决?

标签: asp.netasp.net-mvc

解决方案


解决办法就是Convert.ChangeType()方法。

public void EditProduct(string category, FormCollection formCollection) //Edit choosen product.
    {
        var product = GetNewProduct(category);
        var EfContext = GetEfContext(category);
        foreach (var property in product.GetType().GetProperties())
        {
            var NewValue = Convert.ChangeType(formCollection[property.Name], property.PropertyType);
            property.SetValue(product, NewValue);
        }
        EfContext.GetType().GetMethod("EditProduct").Invoke(EfContext, new object[] { product });
    }

推荐阅读