.NET CORE MvcHtmlString (TextboxFor, LabelFor) .ToString () Ошибка - PullRequest
0 голосов
/ 21 ноября 2018

Здравствуйте, я должен преобразовать MvcHtmlString в строку.Я использовал ранее этот код. (.NET Framework)

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 должна указываться

Пожалуйста, помогите мне.Я должен использовать этот метод или альтернативу.Я пытаюсь построить форму.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Эта строка ниже вызывает ошибку, потому что 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.

Связанная проблема:

Создание настраиваемого помощника HTML в ASP.Net Core

0 голосов
/ 21 ноября 2018

Вы пробовали это?:

div.InnerHtml += label.ToHtmlString(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...