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

时间:2018-11-21 14:08:26

标签: c# .net 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();

现在我正在开发.net核心,并且在

时出现错误
div.InnerHtml += label.ToString();

Error Image

  

返回代表当前对象的字符串。   对类型“ HtmlString”的引用声称它是在“ System.Web”中定义的,但是找不到。   应该引用模块'System.Web,版本= 4.0.0.0,文化=中性,PublicyToken = b03f5f7f11d50a3a

请帮助我。我必须使用此方法或替代方法。我正在尝试建立表格。

2 个答案:

答案 0 :(得分:0)

您尝试过吗?:

div.InnerHtml += label.ToHtmlString(); 

答案 1 :(得分:0)

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

div.InnerHtml += label.ToString();

您应该对现有的AppendHtml()助手使用LabelFor

div.InnerHtml.AppendHtml(label);

请注意,.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;

2)使用Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper而不是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);
}

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

相关问题:

Create Custom HTML Helper in ASP.Net Core

相关问题