Создать помощник 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.

Другие вопросы по тегам