Ich versuche, eine bestimmte HtmlHelper-Erweiterung zu erstellen, um den Spaghetti-Code in meiner Ansicht zu reduzieren.Erstellen MVC HtmlHelper Tabelle aus der Liste der Objekte
Eine Liste von Domänenobjekten aufnehmen Ich möchte eine Tabelle anzeigen, die ein wenig intelligenter ist, wenn die Eigenschaften des Domänenobjekts als Spalten verwendet werden. Außerdem möchte ich das Anzeigen einiger Eigenschaften als Spalten deaktivieren. Eine Idee wäre, Eigenschaften mit Attributen zu versehen, die angeben, dass sie nicht angezeigt werden sollen.
Hoffentlich, die Sinn macht, aber hier ist, wo ich so weit gekommen ...
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
}
So war ich nur fragen, ob jemand hatte irgendwelche Meinungen/Vorschläge zu dieser Idee oder Alternativen?
Beachten Sie auch jqGrid, wenn Sie clientseitige Flexibilität benötigen. – queen3