private static string _GetDetail(T boVM) { var editItems = new List <EditItemSpecification>(); var boType = typeof(T); Attribute[] boVMAttributes = Attribute.GetCustomAttributes(boType); var editorAttribute = boVMAttributes.Where(n => n.GetType().Name == "EditorSpecification").FirstOrDefault() as EditorSpecification; PropertyInfo[] properties = boType.GetProperties(); foreach (PropertyInfo pItem in properties) { var displayAttibute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "DisplayAttribute").FirstOrDefault(); if (displayAttibute != null) { var editItem = new EditItemSpecification(); var displayItem = displayAttibute as System.ComponentModel.DataAnnotations.DisplayAttribute; var displayName = displayItem.Name; var detailAtrribute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "DetailItemSpecification").FirstOrDefault() as DetailItemSpecification; if (detailAtrribute != null) { var itemValue = pItem.GetValue(boVM); editItem.FieldName = pItem.Name; editItem.FieldDisplayName = displayName; editItem.FieldEditContent = _GetDetailFieldContent(detailAtrribute.ItemType, itemValue); //editItem.HorizontalZone= editItems.Add(editItem); } } } var maxLength = (editItems.Max(x => x.FieldDisplayName.Length) + 1) * 16; var htmlString = new StringBuilder(); htmlString.Append("<table style='width:100%'>"); foreach (var item in editItems) { htmlString.Append("<tr>"); htmlString.Append("<td style='width:" + maxLength + "px;text-align:right;vertical-align:top'>" + item.FieldDisplayName + ":</td><td>" + item.FieldEditContent + "</td>"); htmlString.Append("</tr>"); } htmlString.Append("</table>"); return(htmlString.ToString()); }
private static string _GetEditor(T boVM, List <ValidatorResult> vItems = null) { var keyValue = ""; var keyName = ""; var editItems = new List <EditItemSpecification>(); var boType = typeof(T); Attribute[] boVMAttributes = Attribute.GetCustomAttributes(boType); var editorAttribute = boVMAttributes.Where(n => n.GetType().Name == "EditorSpecification").FirstOrDefault() as EditorSpecification; PropertyInfo[] properties = boType.GetProperties(); foreach (PropertyInfo pItem in properties) { var keyAttibute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "KeyAttribute").FirstOrDefault(); if (keyAttibute != null) { keyValue = pItem.GetValue(boVM).ToString(); keyName = pItem.Name; } var displayAttibute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "DisplayAttribute").FirstOrDefault(); if (displayAttibute != null) { var editItem = new EditItemSpecification(); var displayItem = displayAttibute as System.ComponentModel.DataAnnotations.DisplayAttribute; var displayName = displayItem.Name; var editAtrribute = Attribute.GetCustomAttributes(pItem).Where(n => n.GetType().Name == "EditorItemSpecification").FirstOrDefault() as EditorItemSpecification; if (editAtrribute != null) { var itemValue = pItem.GetValue(boVM); editItem.FieldName = pItem.Name; editItem.FieldDisplayName = displayName; editItem.FieldEditContent = _GetEditFieldContent(editAtrribute.ItemType, itemValue, editItem.FieldName, boVM, vItems); if (editAtrribute.ItemType == EditorItemType.Hidden) { editItem.FieldDisplayName = "Hidden"; } editItem.HorizontalZone = editAtrribute.HorizontalZone; editItem.DataType = editAtrribute.ItemType; editItems.Add(editItem); } } } var maxLength = (editItems.Max(x => x.FieldDisplayName.Length) + 1) * 16; var htmlString = new StringBuilder(); htmlString.Append("<input type='hidden' id='" + keyName + "' name='" + keyName + "' value='" + keyValue + "' />"); foreach (var item in editItems.Where(d => d.FieldDisplayName == "Hidden")) { htmlString.Append(item.FieldEditContent); } var uintSpan = "span" + (12 / editorAttribute.HorizontalZoneAmount); htmlString.Append("<div class='grid fluid'><div class='row'>"); for (int i = 1; i < editorAttribute.HorizontalZoneAmount + 1; i++) { htmlString.Append("<div class='" + uintSpan + "'>"); #region 单一输入区域的组件 htmlString.Append("<table style='width:100%'>"); foreach (var item in editItems.Where(d => d.FieldDisplayName != "Hidden")) { if (item.HorizontalZone == i) { var v_Align = "vertical-align:center"; var m_String = "margin-top:-10px"; if (item.DataType == EditorItemType.TextArea) { v_Align = "vertical-align:top"; m_String = ""; } htmlString.Append("<tr>"); htmlString.Append("<td style='width:" + maxLength + "px;text-align:right;" + v_Align + "'><div style='" + m_String + "'>" + item.FieldDisplayName + ":</div></td><td>" + item.FieldEditContent + "</td>"); var statusString = "<i class='icon-pencil'></>"; var errMessage = ""; if (vItems != null) { var eItems = vItems.Where(n => n.Name == item.FieldName); if (eItems.Count() > 0) { foreach (var eItem in eItems) { errMessage = errMessage + eItem.ErrorMessage + "\n"; } } if (!String.IsNullOrEmpty(errMessage)) { statusString = "<i class='icon-cancel-2 fg-red'></i>"; } else { statusString = "<i class='icon-checkmark fg-green'></i>"; } } htmlString.Append("<td style='width:10px;vertical-align:top'><div id='validStatus_" + item.FieldName + "'>" + statusString + "</div></td>"); htmlString.Append("</tr>"); } } htmlString.Append("</table>"); #endregion htmlString.Append("</div>"); } htmlString.Append("</div></div>"); return(htmlString.ToString()); }