gpt4 book ai didi

asp.net-mvc - 我可以更改 LabelFor 在 MVC 中的呈现方式吗?

转载 作者:行者123 更新时间:2023-12-03 18:33:47 26 4
gpt4 key购买 nike

我想改变 LabelFor 渲染的方式。我可以用 DisplayTemplate 做到这一点吗?

LabelFor 生成一个标签标签,我想在标签的末尾添加一个“:”。

谢谢你!

亚历克斯

最佳答案

这是一个可以做到这一点的 HTML Helper:

public static class LabelExtensions {
[SuppressMessage("Microsoft.Design", "CA1006:DoNotNestGenericTypesInMemberSignatures", Justification = "This is an appropriate nesting of generic types")]
public static MvcHtmlString SmartLabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) {
return LabelHelper(html,
ModelMetadata.FromLambdaExpression(expression, html.ViewData),
ExpressionHelper.GetExpressionText(expression));
}

internal static MvcHtmlString LabelHelper(HtmlHelper html, ModelMetadata metadata, string htmlFieldName) {
string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (String.IsNullOrEmpty(labelText)) {
return MvcHtmlString.Empty;
}

// uncomment if want * for required field
//if (metadata.IsRequired) labelText = labelText + " *";
labelText = labelText + ":";

TagBuilder tag = new TagBuilder("label");
tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
tag.SetInnerText(labelText);
return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
}

要使用它:
<%:Html.SmartLabelFor(m => m.FirstName)%>

它将呈现:
<label for="FirstName">First Name:</label>

或者,如果您取消注释相关的必填字段 *
<label for="FirstName">First Name *:</label>

关于asp.net-mvc - 我可以更改 LabelFor 在 MVC 中的呈现方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com