C# .NET核心MvcHtmlString(TextboxFor、LabelFor).ToString()错误

C# .NET核心MvcHtmlString(TextboxFor、LabelFor).ToString()错误,c#,.net,asp.net-mvc,.net-core,C#,.net,Asp.net Mvc,.net Core,您好,我必须将MvcHtmlString转换为string。在此代码之前我使用过。(.net framework) 现在我正在开发.NETCore,我在 div.InnerHtml += label.ToString(); 返回表示当前对象的字符串。 对类型“HtmlString”的引用声称它是在“System.Web”中定义的,但找不到它。 应参考模块'System.Web,版本=4.0.0.0,区域性=中性,PublicyToken=b03f5f7f11d50a3a 请帮帮我。我必须使用

您好,我必须将MvcHtmlString转换为string。在此代码之前我使用过。(.net framework)

现在我正在开发.NETCore,我在

div.InnerHtml += label.ToString();

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

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

你试过这个吗?:

div.InnerHtml += label.ToHtmlString(); 

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

div.InnerHtml += label.ToString();
您应该对现有的
LabelFor
helper使用
AppendHtml()

div.InnerHtml.AppendHtml(label);
请注意.NET Core MVC不使用
System.Web
命名空间,而是使用
Microsoft.AspNetCore
父命名空间。您应该通过以下步骤尝试
IHtmlContent
构建自己的自定义帮助程序,而不是
MvcHtmlString

1) 使用下面提供的语句包括所有
,以启用
IHtmlContent
ihtmlhelp
实例

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);
}
public static IHtmlContent CustomLabelFor(此ihtmlhelp帮助程序、表达式、对象htmlAttributes)
{
字符串结果;
标记生成器div=新标记生成器(“div”);
div.MergeAttribute(“类”、“形式组”);
var label=helper.LabelFor(表达式,new{@class=“control label col-lg-1”});
div.InnerHtml.AppendHtml(标签);
使用(var sw=new System.IO.StringWriter())
{
div.WriteTo(sw,System.Text.Encodings.Web.HtmlEncoder.Default);
结果=sw.ToString();
}
返回新的HtmlString(结果);
}
注意:这个示例助手已经在VS 2017、.NET Core 2.1中进行了测试

相关问题:


在我的visualstudio>@HaroMaro中没有这样一个方法ToHtmlString(),你应该实现
System.Web.HtmlString
而且我在
HtmlString str=new HtmlString(label.value)上发现了这个方法也尝试一下,让我知道这是否奏效。谢谢你的兴趣,但不要做这些。标签只有.GetType、.Equals.GetHashCode方法:(
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);
}