加载时如何在视图中添加TagBuilder

时间:2019-02-14 23:07:11

标签: c# asp.net-core

我正在尝试使用TagBuilder添加选项标签。但是我不知道如何将tagbuilder写入View。

代码:

@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 :(得分:2)

尝试

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

PS:您可能需要使用带有SetInnerText()标签的option

请注意,更可取的方法是创建自定义HTML帮助程序并相应地使用它。 Check This Link

答案 1 :(得分:0)

因此最终得到了一个很好的解决方案,它带有一个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()命名问题