Görünümümdeki spagetti kodunu azaltmak için belirli bir HtmlHelper tablo uzantısı oluşturmaya çalışıyorum.Nesnelerin listesinden MVC HtmlHelper tablosu nasıl oluşturulur?
Etki alanı nesnelerinin bir listesini almak Etki alanı nesnesinin özelliklerini sütun olarak kullanmanın biraz daha akıllı bir tablosunu görüntülemek istiyorum. Ayrıca, bazı özelliklerin sütun olarak gösterilmesini devre dışı bırakmak istiyorum. Bir fikir, gösterilmemesi gerektiğini söyleyen özelliklerle özellikleri süslemek olacaktır. Ben şimdiye kadar var burada nerede mantıklı ama
Umarım ... var
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
}
Yani sadece merak kimse bu fikir ya da herhangi bir alternatifleri üzerinde herhangi görüş/öneri olsaydı?
Ayrıca, istemci tarafı esnekliğine ihtiyacınız varsa jqGrid'i düşünün. – queen3