绑定没有controller / http.context的模型

时间:2010-01-27 04:44:25

标签: c# asp.net-mvc models

我有一个名为“Channel”的模型,它有一堆字符串属性。

我从我的数据源获取数据,该数据源返回一个哈希表。此表的键与我的模型的属性名称匹配。

如何将哈希表自动绑定到Channel模型?

ASP.NET MVC中的绑定器似乎是这样做的,但您需要在具有上下文的控制器中使用它。我不想将上下文传递到我的存储库以使其在获取数据时起作用。 (虽然我想我可以,如果需要的话)

1 个答案:

答案 0 :(得分:1)

这个方法本身是如此微不足道,以至于你不能指望它的“现有”解决方案:

public static T Bind<T>(IDictionary<string, string> hash, T channel)
{
   foreach (var item in hash)
   {
        var prop = typeof(T).GetProperty(item.Key);
        prop.SetValue(channel, Convert.ChangeType(item.Value, prop.PropertyType), new object[0]);
   }
}

这就是你需要的一切。现在,您可以在没有任何控制器的情况下独立使用此方法,或者编写使用它的模型绑定器。

嵌套属性可以有更多的工作(你没有说你需要它),但是使用递归再写5分钟。