मैं एक HTML तालिका बनाने के लिए एक HTMLHelper बनाना चाहता हूं। मैं चाहता हूं कि सहायक किसी भी प्रकार की वस्तु और सूची के रूप में प्रदर्शित करने के लिए ऑब्जेक्ट के गुणों की एक सूची लेने में सक्षम हो। इस तरह कुछ:जेनेरिक एचटीएमएल हेल्पर किसी भी प्रकार की सूची से एचटीएमएल टेबल बनाने के लिए
public static HtmlString Table(this HtmlHelper helper, List<T> data, List<string> headers)
{
//Tags
TagBuilder table = new TagBuilder("table");
TagBuilder tr = new TagBuilder("tr");
TagBuilder td = new TagBuilder("td");
TagBuilder th = new TagBuilder("th");
//Inner html of table
StringBuilder sb = new StringBuilder();
//Add headers
foreach (var s in headers)
{
th.InnerHtml = s;
tr.InnerHtml += th.ToString();
}
sb.Append(tr.ToString());
//Add data
foreach (var d in data)
{
tr.InnerHtml = "";
foreach (var h in headers)
{
td.InnerHtml = d.h.ToString();
tr.InnerHtml += td.ToString();
}
sb.Append(tr.ToString());
}
table.InnerHtml = sb.ToString();
return new HtmlString(table.ToString());
}
यह कोड निश्चित रूप से काम नहीं करेगा, लेकिन मुझे आश्चर्य है कि क्या ऐसा कुछ करना संभव होगा? और मैं ऐसा करने के बारे में कैसे जा सकता हूं।
संपादित करें:
मैं निम्नलिखित समाधान चुना है, विचार था कि तालिका केवल तत्वों हेडर सूची में निर्दिष्ट शामिल करना चाहिए, तो यह है कि क्या मैं के साथ आया था:
public static HtmlString Table<T>(this HtmlHelper helper, List<T> data, List<string> headers)
{
//Tags
TagBuilder table = new TagBuilder("table");
TagBuilder tr = new TagBuilder("tr");
TagBuilder td = new TagBuilder("td");
TagBuilder th = new TagBuilder("th");
//Inner html of table
StringBuilder sb = new StringBuilder();
//Add headers
foreach (var s in headers)
{
th.InnerHtml = s;
tr.InnerHtml += th.ToString();
}
sb.Append(tr.ToString());
//Add data
foreach (var d in data)
{
tr.InnerHtml = "";
foreach (var h in headers)
{
td.InnerHtml = d.GetType().GetProperty(h).GetValue(d, null).ToString();
tr.InnerHtml += td.ToString();
}
sb.Append(tr.ToString());
}
table.InnerHtml = sb.ToString();
return new HtmlString(table.ToString());
}
यदि आप मानते हैं कि आपकी 'सूची' में 'टी' मानचित्र 'सार्वजनिक गुणों' के माध्यम से शीर्षलेखों के लिए हैं तो आप आरामदायक होंगे? –
LukeHennerley
विचार यह है कि एक हेडर टी की एक सार्वजनिक संपत्ति से मेल खाता है। इसलिए मुझे लगता है कि जवाब हाँ है। – Marius