循环通过T模型属性。建立搜索

时间:2011-04-28 19:14:02

标签: c# asp.net-mvc-2

我即将在网站上建立一个搜索页面,搜索范围将扩展到几个模型,并且每个模型都有很多属性。

有没有办法以通用方式执行此操作或使用反射器,如我在某些帖子中看到的那样?我需要一些关于如何实现此目的的指示或提示。非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用反射来获取所需的信息。如果您有T型,可以使用

typeof(T).GetProperties()

获取所有公共财产。字段,方法也是如此......如果您需要更多元数据来生成搜索,您可以使用属性来注释属性(或字段,方法,......)这就是我开始使用的方式。进一步的细节取决于您的确切用例。

答案 1 :(得分:1)

你能提供更多细节吗?

您的搜索目的是什么?给我30秒的版本,这样我就能理解你的目标。

您打算使用RegEx和词干吗?

什么类型的值算作匹配?

我假设你只想搜索对象/模型的属性。正确?

想要查看每个属性还是只看其中的一些?

属性中存储了哪些类型的数据? (string,byte [],enum等)

头脑风暴的想法:

如果在数据库服务器端搜索而不是在水合物体中搜索?利用数据库可能更快(在运行时)将所有对象加载到内存中然后反映它们。

您还可以在模型本身的上下文中编写支持搜索的方法。您将搜索规则集作为表达式传递,然后找到匹配项。如果您有某种集合容器,则可以在该级别针对集合中的所有对象运行搜索。

如果你想要一些反射代码,我写了一些东西,通过反射显示了很多关于对象的信息。我很久以前写过这篇文章(2009年12月)。我不确定它是否符合您的要求。看一看。如果它适合您,请使用它! (Link