Можно ли получить доступ к HTML из класса без отправки в качестве параметра? - PullRequest
1 голос
/ 09 мая 2011

Я хотел бы получить доступ к объекту Html внутри класса, чтобы я мог вызвать Class.Method для рендеринга чего-либо, используя Html.Partial.

Есть ли способ, которым я могу назвать его Class.Method()Class.Method(Html)?

1 Ответ

1 голос
/ 09 мая 2011

Так или иначе вам понадобится ссылка на HtmlHelper для вызова метода Partial.

Вы можете сделать его расширением HtmlHelper

public static MvcHtmlString Method(this HtmlHelper helper, Class @class)
{
    return helper.Partial(....);
}

Или создайте HtmlHelper из Method метода в Class, что может быть более проблематично, так как Context не существует в этом классе, если вы не найдете ссылку на него через HttpContext

Вы можете легко создать HtmlHelper на своем контроллере следующим образом:

    HtmlHelper _htmlHelper;
    public HtmlHelper HtmlHelper
    {
        get 
        {
            if (_htmlHelper == null)
            {
                TextWriter writer = new StringWriter();
                _htmlHelper = new HtmlHelper(new ViewContext(ControllerContext,
                    new WebFormView("Default"),
                    new ViewDataDictionary(),
                    new TempDataDictionary(), writer), new ViewPage());
            }

            return _htmlHelper;
        }
    }
...