Создать помощник HTML для MVC
Я новичок в MVC, поэтому не уверен, что это возможно.
У меня есть HTML, который в основном использует некоторые изображения, чтобы создать красивую коробку с закругленными углами.
Возможно ли в mvc3 создать вспомогательную функцию, которая позволит мне вызывать помощника и вставлять любой контент, который я хочу, в основную область тегов div.
это мой HTML
<div class="rounded">
<div class="top">
<div class="right">
</div>
</div>
<div class="middle">
<div class="right">
<div class="content">
Some how allow me to insert data into here
<div class="Clear">
</div>
</div>
</div>
<div class="bottom">
<div class="right">
</div>
</div>
</div>
</div>
Я не хочу копировать это везде, где я хочу использовать этот стиль, поэтому я надеюсь, что смогу создать некоторый тип помощника и вызывать его всякий раз, когда мне понадобится использовать это поле, и позволить мне вставлять HTML в
<div class="content">
Some how allow me to insert data into here
<div class="Clear">
</div>
У кого-нибудь есть предложения?
Спасибо
2 ответа
Похоже, отличный сценарий для пользовательского помощника HTML:
public class RoundedCorner : IDisposable
{
private readonly ViewContext _viewContext;
private bool _disposed = false;
public RoundedCorner(ViewContext viewContext)
{
_viewContext = viewContext;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
_disposed = true;
_viewContext.Writer.Write(
@"<div class=""Clear"">
</div>
</div>
</div>
<div class=""bottom"">
<div class=""right"">
</div>
</div>
</div>
</div>"
);
}
}
}
public static class HtmlExtensions
{
public static RoundedCorner RoundedCorner(this HtmlHelper htmlHelper)
{
htmlHelper.ViewContext.Writer.Write(
@"<div class=""rounded"">
<div class=""top"">
<div class=""right"">
</div>
</div>
<div class=""middle"">
<div class=""right"">
<div class=""content"">"
);
return new RoundedCorner(htmlHelper.ViewContext);
}
}
и на ваш взгляд просто:
@using (Html.RoundedCorner())
{
<div>Some how allow me to insert data into here</div>
}
который сгенерирует (я знаю, что за уродливый формат, но совершенно корректный HTML, сейчас мне лень это исправлять):
<div class="rounded">
<div class="top">
<div class="right">
</div>
</div>
<div class="middle">
<div class="right">
<div class="content"> <div>Some how allow me to insert data into here</div>
<div class="Clear">
</div>
</div>
</div>
<div class="bottom">
<div class="right">
</div>
</div>
</div>
</div>
Мне нравится решение, предоставленное Дарином. Единственные изменения, которые я хотел бы сделать, - это иметь два закрытых метода в классе RoundedCorner, которые записывают открывающий и закрывающий теги в контекст представления, вместо того, чтобы иметь его часть в классе и другую часть в помощнике. Затем помощник просто возвращает новый экземпляр RoundedCorner.