asp core下的c# html标签库不适合我
本文关键字:不适合 标签 html core 下的 asp | 更新日期: 2023-09-27 18:06:23
我想在我的asp core项目中使用c# html标签。我想为我的登录建立一个自定义标签。
与其一直在我的剃刀视图中写这个:
<div class="form-group">
<label for="email">Email address:</label>
<input type="email" class="form-control" id="email">
</div>
我想在我的HelperClass中定义这个:
public static HtmlTag Login<T>(this IHtmlHelper<T> htmlHelper,
Expression<Func<T, object>> expression,
Action<HtmlTag> inputModifier = null)
{
inputModifier = inputModifier ?? (_ => { });
var div = new HtmlTag("div");
div.AddClass("form-control");
var lbl = htmlHelper.LabelFor(expression);
div.Append(lbl);
return div;
}
LabelFor(expression)返回IHtmlContent类型,但是追加方法需要HtmlTag类型。我不能转换它,这就是为什么我卡住了。
我使用html标签。AspNetCore 4.2.0
您正在使用内置的HtmlHelper
,您应该更改为HtmlTags.Label
方法:
public static HtmlTag Login<T>(this IHtmlHelper<T> htmlHelper,
Expression<Func<T, object>> expression,
Action<HtmlTag> inputModifier = null)
{
inputModifier = inputModifier ?? (_ => { });
var div = new HtmlTag("div");
div.AddClass("form-control");
var lbl = htmlHelper.Label(expression);
div.Append(lbl);
return div;
}
不添加HtmlTag,而是添加HTML字符串:
public static string GetString(IHtmlContent content)
{
var writer = new StringWriter();
content.WriteTo(writer, HtmlEncoder.Default);
return writer.ToString();
}
并将结果添加到标记中,如下所示:
tag.AppendHtml