Как добавить TagBuilder для просмотра при загрузке - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь добавить тег опции, используя TagBuilder.Но я не могу понять, как записать тэгбилдер в представление.

Код:

@foreach (IActivityType at in _data.Context.ActivityType)
{
    TagBuilder opt = new TagBuilder("option");
    opt.Attributes.Add("value", at.Id.ToString());

    if (at.Id.Equals(activity.ActivityTypeId))
    {
        opt.Attributes.Add("selected", "selected");
    }

    @Html.Raw(opt);
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

В итоге получилось отличное небольшое решение с расширением IHtmlContent, которое возвращает тег в виде html.

public static string ToZtring(this IHtmlContent content, bool encode = false)
{
    string result = default;

    using (StringWriter sw = new StringWriter())
    {
        content.WriteTo(sw, HtmlEncoder.Default);

        result = sw.ToString();
    }

    if (!encode)
    {
        result = HttpUtility.HtmlDecode(result);
    }

    return result;
}

TagBuilder opt = new TagBuilder("option");
opt.Attributes.Add("value", "demo");

@Html.Raw(opt.ToZtring());

Я вызвал метод расширения для ToZstring (), чтобы избежать проблем с именами в ToString ()

0 голосов
/ 15 февраля 2019

Попробуйте

@Html.Raw(opt.ToString(TagRenderMode.Normal));

PS: Вам может понадобиться использовать SetInnerText() с тегом option

Пожалуйста, также имейте в виду, что предпочтительным подходом является создание пользовательскихHTML Helper и используйте его соответственно. Проверить эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...