public static MvcHtmlString CustomLabelFor <TModel, TValue>(this HtmlHelper <TModel> html, Expression <Func <TModel, TValue> > expression, object htmlAttributes) { var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData); var resolvedLabelText = metadata.DisplayName ?? metadata.PropertyName; if (metadata.IsRequired) { resolvedLabelText += "*"; } return(LabelExtensions.LabelFor <TModel, TValue>(html, expression, resolvedLabelText, htmlAttributes)); }
internal static string ObjectTemplate(HtmlHelper html, TemplateHelpers.TemplateHelperDelegate templateHelper) { ViewDataDictionary viewData = html.ViewContext.ViewData; TemplateInfo templateInfo = viewData.TemplateInfo; ModelMetadata modelMetadata = viewData.ModelMetadata; StringBuilder builder = new StringBuilder(); if (templateInfo.TemplateDepth > 1) { if (modelMetadata.Model == null) { return(modelMetadata.NullDisplayText); } // DDB #224751 string text = modelMetadata.SimpleDisplayText; if (modelMetadata.HtmlEncode) { text = html.Encode(text); } return(text); } foreach (ModelMetadata propertyMetadata in modelMetadata.Properties.Where(pm => ShouldShow(pm, templateInfo))) { if (!propertyMetadata.HideSurroundingHtml) { string label = LabelExtensions.LabelHelper(html, propertyMetadata, propertyMetadata.PropertyName).ToHtmlString(); if (!String.IsNullOrEmpty(label)) { builder.AppendFormat(CultureInfo.InvariantCulture, "<div class=\"editor-label\">{0}</div>\r\n", label); } builder.Append("<div class=\"editor-field\">"); } builder.Append(templateHelper(html, propertyMetadata, propertyMetadata.PropertyName, null /* templateName */, DataBoundControlMode.Edit, null /* additionalViewData */)); if (!propertyMetadata.HideSurroundingHtml) { builder.Append(" "); builder.Append(html.ValidationMessage(propertyMetadata.PropertyName)); builder.Append("</div>\r\n"); } } return(builder.ToString()); }
public static MvcHtmlString RequiredLabelFor <T, U>(this HtmlHelper <T> helper, Expression <Func <T, U> > expression, object htmlAttributes) { var metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData); string htmlFieldName = ExpressionHelper.GetExpressionText(expression); string labelText = metaData.DisplayName ?? metaData.PropertyName ?? htmlFieldName.Split('.').Last(); if (metaData.IsRequired) { labelText += "*"; } return(LabelExtensions.LabelFor(helper, expression, labelText, htmlAttributes)); }