internal static string ObjectTemplate(HtmlHelper html, AngularTemplateHelpers.TemplateHelperDelegate templateHelper) { var viewData = html.ViewContext.ViewData; var templateInfo = viewData.TemplateInfo; var modelMetadata = viewData.ModelMetadata; var stringBuilder = new StringBuilder(); if (templateInfo.TemplateDepth > 1) { if (modelMetadata.Model != null) { return(modelMetadata.SimpleDisplayText); } else { return(modelMetadata.NullDisplayText); } } // basic template for a form field that is aware of Bootstrap styles and angular form settings foreach (var metadata in modelMetadata.Properties.Where(pm => ShouldShow(pm, templateInfo))) { if (!metadata.HideSurroundingHtml) { // bootstrap form-group stringBuilder.Append("<div class=\"form-group\">"); // Label text var labeltext = LabelHelperInternal(html, metadata, metadata.PropertyName, null, new Dictionary <string, object>() { { "class", "col-md-2 control-label" } }).ToHtmlString(); if (!string.IsNullOrEmpty(labeltext)) { stringBuilder.AppendFormat(CultureInfo.InvariantCulture, "{0}\r\n", labeltext); } stringBuilder.Append("<div class=\"col-md-10\">"); } // Core element stringBuilder.Append(templateHelper(html, metadata, metadata.PropertyName, null, DataBoundControlMode.Edit, null)); // End surrounding if (!metadata.HideSurroundingHtml) { stringBuilder.Append("</div>\r\n"); // Bootstrap style help block with private extension stringBuilder.AppendFormat("<span class=\"help-block-dynamic\">{0}</span>", metadata.Description); stringBuilder.Append(" "); stringBuilder.Append("<div class=\"col-md-offset-2\">"); stringBuilder.Append(html.ValidationMessage(metadata.PropertyName)); stringBuilder.Append("</div>\r\n"); stringBuilder.Append("</div>\r\n"); } } return(stringBuilder.ToString()); }
internal static string CollectionTemplate(HtmlHelper html, AngularTemplateHelpers.TemplateHelperDelegate templateHelper) { var model = html.ViewContext.ViewData.ModelMetadata.Model; if (model == null) { return(String.Empty); } var enumerable = model as IEnumerable; if (enumerable == null) { throw new InvalidOperationException(String.Format((IFormatProvider)CultureInfo.CurrentCulture, "Templates_TypeMustImplementIEnumerable {0}", model.GetType().FullName)); } else { var type = typeof(string); var genericInterface = TypeHelpers.ExtractGenericInterface(enumerable.GetType(), typeof(IEnumerable <>)); if (genericInterface != (Type)null) { type = genericInterface.GetGenericArguments()[0]; } var flag = TypeHelpers.IsNullableValueType(type); var htmlFieldPrefix = html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix; try { html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = String.Empty; var str1 = htmlFieldPrefix; var stringBuilder = new StringBuilder(); var num = 0; try { foreach (var item in enumerable) { var modelType = type; if (item != null && !flag) { modelType = item.GetType(); } var metadataForType = ModelMetadataProviders.Current.GetMetadataForType((Func <object>)(() => item), modelType); var htmlFieldName = String.Format((IFormatProvider)CultureInfo.InvariantCulture, "{0}[{1}]", str1, num++); var str2 = templateHelper(html, metadataForType, htmlFieldName, null, DataBoundControlMode.ReadOnly, null); stringBuilder.Append(str2); } } finally { } return(stringBuilder.ToString()); } finally { html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = htmlFieldPrefix; } } }
internal static string ObjectTemplate(HtmlHelper html, AngularTemplateHelpers.TemplateHelperDelegate templateHelper) { var viewData = html.ViewContext.ViewData; var templateInfo = viewData.TemplateInfo; var modelMetadata = viewData.ModelMetadata; var stringBuilder = new StringBuilder(); if (modelMetadata.Model == null) { return(modelMetadata.NullDisplayText); } if (templateInfo.TemplateDepth > 1) { return(modelMetadata.SimpleDisplayText); } foreach (var metadata in modelMetadata.Properties.Where((Func <ModelMetadata, bool>)(pm => ShouldShow(pm, templateInfo)))) { if (!metadata.HideSurroundingHtml) { // follow the bootstrap CSS stringBuilder.Append("<div class=\"form-group\">"); var displayName = metadata.GetDisplayName(); if (!string.IsNullOrEmpty(displayName)) { // follow the bootstrap CSS stringBuilder.AppendFormat((IFormatProvider)CultureInfo.InvariantCulture, "<label class=\"form-group\">{0}</label>", new object[1] { (object)displayName }); stringBuilder.AppendLine(); } } stringBuilder.Append(templateHelper(html, metadata, metadata.PropertyName, (string)null, DataBoundControlMode.ReadOnly, (object)null)); if (!metadata.HideSurroundingHtml) { stringBuilder.AppendLine("</div>"); } } return(stringBuilder.ToString()); }
internal static string CollectionTemplate(HtmlHelper html, AngularTemplateHelpers.TemplateHelperDelegate templateHelper) { var model = html.ViewContext.ViewData.ModelMetadata.Model; if (model == null) { return(string.Empty); } var enumerable = model as IEnumerable; if (enumerable == null) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Templates_TypeMustImplementIEnumerable", new object[1] { model.GetType().FullName })); } else { var type = typeof(string); var genericInterface = TypeHelpers.ExtractGenericInterface(enumerable.GetType(), typeof(IEnumerable <>)); if (genericInterface != null) { type = genericInterface.GetGenericArguments()[0]; } var flag = TypeHelpers.IsNullableValueType(type); var htmlFieldPrefix = html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix; try { html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = string.Empty; var str1 = htmlFieldPrefix; var stringBuilder = new StringBuilder(); var num = 0; var enumerator = enumerable.GetEnumerator(); try { while (enumerator.MoveNext()) { var item = enumerator.Current; var modelType = type; if (item != null && !flag) { modelType = item.GetType(); } var metadataForType = ModelMetadataProviders.Current.GetMetadataForType(() => item, modelType); var htmlFieldName = string.Format(CultureInfo.InvariantCulture, "{0}[{1}]", new object[2] { str1, num++ }); var str2 = templateHelper(html, metadataForType, htmlFieldName, null, DataBoundControlMode.Edit, null); stringBuilder.Append(str2); } } finally { var disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } return(stringBuilder.ToString()); } finally { html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix = htmlFieldPrefix; } } }