Я работаю над Html Helper для создания элемента управления, который будет состоять из нескольких элементов, построение с использованием TagBuilder
s.Сам элемент управления будет отображаться с использованием TagBuilder
, который содержит div
со всеми дочерними элементами.
Для этого: https://developercommunity.visualstudio.com/content/problem/17287/tagbuilder-tostring-returns-the-type-of-tagbuilder.html
Я реализовал метод Render()
для созданияконтролировать и возвращать его как string
:
public class MyCustomControl
{
public override string ToString()
{
return Render();
}
private string Render()
{
TagBuilder mainContainer = new TagBuilder("div");
// Generate child elements and append to mainContainer...
using (StringWriter writer = new StringWriter())
{
mainContainer.WriteTo(writer, HtmlEncoder.Default);
return writer.ToString();
}
}
}
И создал метод расширения для вызова его в представлении Razor:
public static MyCustomControl(this IHtmlHelper html)
{
return new MyCustomControl();
}
И включить его в представления следующим образом:
@(Html.MyCustomControl()
)
Проблема в том, что вместо рендеринга html я получаю вывод необработанного html-текста в View, поэтому я вижу:
<div><!-- all child controls html here --></div>
Вместо того, чтобы там был элемент.