gpt4 book ai didi

asp.net-mvc-3 - 使用 Html 助手的 Html 内部标签

转载 作者:行者123 更新时间:2023-12-02 12:34:21 25 4
gpt4 key购买 nike

如何使用 Html.Label 在标签内添加内联 html 元素?

最佳答案

看起来对于自​​定义助手来说是一个很好的场景:

public static class LabelExtensions
{
public static MvcHtmlString LabelFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> ex,
Func<object, HelperResult> template
)
{
var htmlFieldName = ExpressionHelper.GetExpressionText(ex);
var for = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName);
var label = new TagBuilder("label");
label.Attributes["for"] = TagBuilder.CreateSanitizedId(for);
label.InnerHtml = template(null).ToHtmlString();
return MvcHtmlString.Create(label.ToString());
}
}

然后:

@Html.LabelFor(
x => x.Name,
@<span>Hello World</span>
)
<小时/>

更新:

要实现您在评论部分中提出的要求,您可以尝试以下操作:

public static class HtmlHelperExtensions
{
public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> ex, Func<object, HelperResult> template)
{
var htmlFieldName = ExpressionHelper.GetExpressionText(ex);
var propertyName = htmlFieldName.Split('.').Last();
var label = new TagBuilder("label");
label.Attributes["for"] = TagBuilder.CreateSanitizedId(htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName));
label.InnerHtml = string.Format(
"{0} {1}",
propertyName,
template(null).ToHtmlString()
);
return MvcHtmlString.Create(label.ToString());
}
}

然后:

@Html.LabelFor(
x => x.Name,
@<em>mandatory</em>
)

关于asp.net-mvc-3 - 使用 Html 助手的 Html 内部标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706815/

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