создать HTML помощник для MVC - PullRequest
5 голосов
/ 23 февраля 2011

Я новичок в 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 ]

6 голосов
/ 23 февраля 2011

Похоже, отличный сценарий для пользовательского помощника 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>
2 голосов
/ 30 марта 2011

Мне нравится решение, представленное Дарином.Единственные изменения, которые я бы сделал, - это наличие двух закрытых методов в классе RoundedCorner, которые записывают открывающий и закрывающий теги в контекст представления, вместо того, чтобы иметь его часть в классе и другую часть в помощнике.Затем помощник просто возвращает новый экземпляр RoundedCorner.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...