.NET CORE MvcHtmlString(TextboxFor, LabelFor).ToString() 错误

Har*_*goz 4 .net c# asp.net-mvc .net-core

您好,我必须将 MvcHtmlString 转换为字符串。我之前使用过这段代码。(.net框架)

TagBuilder div = new TagBuilder("div");
div.MergeAttribute("class", "form-group");
var label = helper.LabelFor(expression, new { @class = "control-label col-lg-1" });
div.InnerHtml += label.ToString();
Run Code Online (Sandbox Code Playgroud)

现在我正在开发 .net core,但出现错误

div.InnerHtml += label.ToString();
Run Code Online (Sandbox Code Playgroud)

错误图像

返回表示当前对象的字符串。对类型“HtmlString”的引用声称它是在“System.Web”中定义的,但找不到。应引用模块“System.Web,Version=4.0.0.0,Culture=neutral,PublicyToken=b03f5f7f11d50a3a”

请帮我。我必须使用这种方法或替代方法。我正在尝试构建一个表单。

Tet*_*oto 5

下面的这一行会导致错误,因为TagBuilder.InnerHtml它是只读属性,并且您不能使用+=运算符来分配 HTML 字符串:

div.InnerHtml += label.ToString();
Run Code Online (Sandbox Code Playgroud)

你应该做的是AppendHtml()针对现有的LabelFor助手使用:

div.InnerHtml.AppendHtml(label);
Run Code Online (Sandbox Code Playgroud)

请注意,.NET Core MVC 不使用System.Web命名空间,而是使用Microsoft.AspNetCore父命名空间。您应该尝试按照以下步骤IHtmlContent构建自己的自定义助手而不是:MvcHtmlString

1) 包括using下面提供的所有语句以启用IHtmlContentIHtmlHelper实例。

using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
Run Code Online (Sandbox Code Playgroud)

Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper2) 使用as 参数而不是 来创建自定义助手System.Web.Mvc.HtmlHelper,如下例所示:

public static IHtmlContent CustomLabelFor<TModel, TProperty>(this IHtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{
    string result;

    TagBuilder div = new TagBuilder("div");
    div.MergeAttribute("class", "form-group");
    var label = helper.LabelFor(expression, new { @class = "control-label col-lg-1" });
    div.InnerHtml.AppendHtml(label);

    using (var sw = new System.IO.StringWriter())
    {
        div.WriteTo(sw, System.Text.Encodings.Web.HtmlEncoder.Default);
        result = sw.ToString();
    }

    return new HtmlString(result);
}
Run Code Online (Sandbox Code Playgroud)

注意:此示例帮助程序已在 VS 2017、.NET Core 2.1 中进行了测试。

相关问题:

在 ASP.Net Core 中创建自定义 HTML 帮助器