ASP.NET MVC с использованием частичного рендеринга из Html Helper - PullRequest
22 голосов
/ 18 января 2010

У меня есть расширение 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 в этой части.

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

Ответы [ 2 ]

67 голосов
/ 21 марта 2011

Поскольку этот вопрос, несмотря на то, что он был старый и помеченный как ответ, появился в 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();
}
0 голосов
/ 18 января 2010

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

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