Прямо сейчас у меня в проекте Mvc4
есть класс .cs
именем HTMLcreator
в папке App_Code
, который делает html
для отображения в моих представлениях.
Это, я слышал, не самый лучший способ, и он утомительно обновляет элементы html
в файле .cs
.
Каким будет лучший способ создания динамического html для представления?
HTMLcreator.cs:
public static string methodOne()
{
StringBuilder result = new StringBuilder();
List<Subjects> subjects = Subjects.GetAll(); // Gets a some objects
foreach (Subjects s in subjects)
{
result.Append("<p>" + s.name + "</p>");
if(s.hasChild)
{
result.Append(methodTwo(Subjects.GetChild(s)));
}
}
return Convert.ToString(result);
}
public static string methodTwo(Subjects s)
{
StringBuilder result = new StringBuilder();
result.Append("<p>" + s.name + "</p>");
if(s.hasChild)
{
result.Append(methodTwo(Subjects.GetChild(s)));
}
return Convert.ToString(result);
}
Вид вызывает метод с помощью метода @Html.Raw
.
Что вам действительно нужно здесь, это helper
:
@helper methodOne(Subjects subjects)
{
foreach (var subject in subjects)
{
<p>@subject.name</p>
if (subject.hasChild)
@methodOne(Subjects.GetChild(subject))
}
}
Затем используйте его где-нибудь в вашем представлении:
<div>
@methodOne(subjects)
</div>
Тем не менее, если вы настаиваете на том, чтобы генерировать HTML самостоятельно, лучше используйте System.Web.Mvc.TagBuilder
:
Содержит классы и свойства, которые используются для создания элементов HTML. Этот класс используется для написания помощников, таких как те, которые содержатся в пространстве имен System.Web.Helpers.
См. MSDN.
StringBuilder
для «генерации HTML напрямую».