В итоге получилось отличное небольшое решение с расширением 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 ()