Sto cercando di creare un'estensione tabella HtmlHelper specifica per ridurre il codice spaghetti nella mia vista.Come creare la tabella MVC HtmlHelper dall'elenco degli oggetti
Prendere un elenco di oggetti di dominio Vorrei visualizzare una tabella che è un po 'più intelligente nell'uso delle proprietà dell'oggetto dominio come colonne. Inoltre, vorrei disabilitare la visualizzazione di alcune proprietà come colonne. Un'idea sarebbe quella di decorare le proprietà con attributi che dicono di non essere mostrate.
Speriamo che abbia un senso, ma qui è dove ho avuto modo finora ...
public static string MyTable(this HtmlHelper helper, string name,
IList<MyObject> items, object tableAttributes)
{
if (items == null || items.Count == 0)
return String.Empty;
StringBuilder sb = new StringBuilder();
BuildTableHeader(sb, items[0].GetType());
//TODO: to be implemented...
//foreach (var i in items)
// BuildMyObjectTableRow(sb, i);
TagBuilder builder = new TagBuilder("table");
builder.MergeAttributes(new RouteValueDictionary(tableAttributes));
builder.MergeAttribute("name", name);
builder.InnerHtml = sb.ToString();
return builder.ToString(TagRenderMode.Normal);
}
private static void BuildTableHeader(StringBuilder sb, Type p)
{
sb.AppendLine("<tr>");
//some how here determine if this property should be shown or not
//this could possibly come from an attribute defined on the property
foreach (var property in p.GetProperties())
sb.AppendFormat("<th>{0}</th>", property.Name);
sb.AppendLine("</tr>");
}
//would be nice to do something like this below to determine what
//should be shown in the table
[TableBind(Include="Property1,Property2,Property3")]
public partial class MyObject
{
...properties are defined as Linq2Sql
}
Quindi mi stavo chiedendo se qualcuno avesse qualche opinioni/suggerimenti su questo o qualsiasi idea alternative?
Considerate anche jqGrid se avete bisogno di flessibilità sul lato client. – queen3