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

asp core下的c# html标签库不适合我

您正在使用内置的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