Попытка обобщенного списка (который не зависит от Вас имеющий доступ к внутренним инструментам Google):
Примерно через час работы я смог создать то, что Я хотел. Мое решение заключалось в создании атрибута для класса объекта домена, который определял, какие свойства были видны в моей таблице.
На основе атрибута BindAttribute в MVC 1.0 (взглянув на исходный код) я создал атрибут TableProperty.
1224] Это позволило мне украсить мой объект домена этим атрибутом ...
[TableProperty(Include="Property1,Property2,Property3")]
public partial class MyObject
{ ...
Затем внутри BuildTableHeader я использовал отражение, чтобы получить свойства объекта и сопоставить каждое свойство с разрешенным списком.
private static void BuildTableHeader(StringBuilder sb, Type p)
{
sb.AppendLine("<tr>");
TableProperty tp = p.GetCustomAttributes(typeof(TableProperty), true)[0];
foreach (var property in p.GetProperties())
if (tp.IsPropertyAllowed(property.Name))
sb.AppendFormat("<th>{0}</th>", property.Name);
Обратите внимание, что это решение сработало для меня в моем небольшом приложении, однако, я буду больше смотреть на MvcContrib's Grid для лучшей реализации.
Looks good so far, but Gil Fink may have already done the work for you here: http://blogs.microsoft.co.il/blogs/gilf/archive/2009/01/13/extending-asp-net-mvc-htmlhelper-class.aspx
Я настоятельно рекомендую использовать сетку MvcContrib . Если вы решите не делать этого, по крайней мере, вы можете посмотреть, как они решили проблему интерфейса генерации таблиц.