Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @inherits ViewPage<GetCustomersubscriptionsResponse>
- @{
- ViewBag.Title = string.Format("History > subscriptions > Customer {0}", Model.CustomerId);
- Layout = "CustomerOfficeUIFabric";
- }
- <div class="tableContainer">
- @if (Model.subscriptions != null && Model.subscriptions.Count > 0)
- {
- <table class="ms-Table" style="max-width:800px;">
- <thead>
- <tr>
- @{
- Type subscriptionType = Model.subscriptions.GetType().GetGenericArguments()[0];
- }
- @Html.GenerateHeadings(subscriptionType)
- </tr>
- </thead>
- <tbody>
- @foreach (var subscription in Model.subscriptions)
- {
- @Html.GenerateRow(subscription)
- }
- </tbody>
- </table>
- }
- else
- {
- <div class="notFound ms-font-m-plus">No records found</div>
- }
- </div>
- public static class HtmlHelperExtensions
- {
- public static MvcHtmlString GenerateRow(this HtmlHelper htmlHelper, object Subscription)
- {
- var sb = new StringBuilder();
- sb.Append("<tr>");
- Type SubscriptionType = Subscription.GetType();
- foreach (PropertyInfo propertyInfo in SubscriptionType.GetProperties())
- {
- object propertyValue = propertyInfo.GetValue(Subscription, null);
- sb.Append($"<td>{propertyValue}</td>");
- }
- sb.Append("</tr>");
- return new MvcHtmlString(sb.ToString());
- }
- public static MvcHtmlString GenerateHeadings(this HtmlHelper htmlHelper, Type modelType)
- {
- var sb = new StringBuilder();
- List<string> displayNames = GetDisplayNames(modelType);
- foreach (var displayName in displayNames)
- {
- sb.Append($"<th>{displayName}</th>");
- }
- return new MvcHtmlString(sb.ToString());
- }
- private static List<string> GetDisplayNames(Type modelType)
- {
- List<string> displayNames = new List<string>();
- PropertyInfo[] props = modelType.GetProperties();
- foreach (PropertyInfo prop in props)
- {
- string displayNameAttributeValue = GetDisplayNameAttributeValue(prop);
- string heading = !string.IsNullOrWhiteSpace(displayNameAttributeValue) ? displayNameAttributeValue : prop.Name;
- displayNames.Add(heading);
- }
- return displayNames;
- }
- private static string GetDisplayNameAttributeValue(PropertyInfo prop)
- {
- object[] attributes = prop.GetCustomAttributes(false);
- if (attributes.Any())
- {
- var displayNameAttributes = attributes.Where(x => x is DisplayNameAttribute);
- if (displayNameAttributes.Any())
- {
- var displayNameAttribute = displayNameAttributes.First() as DisplayNameAttribute;
- return displayNameAttribute.DisplayName;
- }
- }
- return null;
- }
- }
Add Comment
Please, Sign In to add comment