您好,我必须将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();
返回代表当前对象的字符串。 对类型“ HtmlString”的引用声称它是在“ System.Web”中定义的,但是找不到。 应该引用模块'System.Web,版本= 4.0.0.0,文化=中性,PublicyToken = b03f5f7f11d50a3a
请帮助我。我必须使用此方法或替代方法。我正在尝试建立表格。
答案 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
语句,以启用IHtmlContent
和IHtmlHelper
实例。
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中进行了测试。
相关问题: