Подтвердить что ты не робот

ASP.NET MVC с использованием частичного рендеринга внутри Html Helper

У меня есть расширение HtmlHelper, которое в настоящее время возвращает строку с использованием построителя строк и достаточного количества сложной логики. Теперь я хочу добавить что-то дополнительное к нему, которое берется из частичного вызова рендеринга, что-то вроде этого...

public static string MyHelper(this HtmlHelper helper)
{
    StringBuilder builder = new StringBuilder();
    builder.Append("Hi There");
    builder.Append(RenderPartial("MyPartialView"));
    builder.Append("Bye!");
    return builder.ToString();
}

Теперь, конечно, RenderPartial отображает непосредственно ответ, так что это не работает, и я пробовал несколько решений для рендеринга частичных строк, но все, похоже, упали на один. Я использую HtmlHelper внутри этого частичного.

Возможно ли это?

4b9b3361

Ответ 1

Поскольку этот вопрос, хотя старый и отмеченный ответил, появился в google, я дам другой ответ.

В asp.net mvc 2 и 3 существует метод Html.Partial(...), который работает как RenderPartial, но возвращает частичное представление в виде строки вместо того, чтобы напрямую его отображать.

Таким образом, ваш пример будет выглядеть следующим образом:

//using System.Web.Mvc.Html;
public static string MyHelper(this HtmlHelper helper)
{
    StringBuilder builder = new StringBuilder();
    builder.Append("Hi There");
    builder.Append(helper.Partial("MyPartialView"));
    builder.Append("Bye!");
    return builder.ToString();
}

Ответ 2

Вы не должны вызывать частичные части из помощника. Помощники "помогают" вашим взглядам, и не больше. Проверьте метод RenderAction от MVCContrib (если вам это нужно сейчас) или MVC v2 (если вы можете подождать еще несколько месяцев). Вы сможете передать свою модель стандартным действиям контроллера и получить частичный результат.