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”
请帮我。我必须使用这种方法或替代方法。我正在尝试构建一个表单。
下面的这一行会导致错误,因为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
下面提供的所有语句以启用IHtmlContent
和IHtmlHelper
实例。
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
Run Code Online (Sandbox Code Playgroud)
Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper
2) 使用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 帮助器
归档时间: |
|
查看次数: |
4176 次 |
最近记录: |