Как вызвать RenderAction в моем Html помощнике? - PullRequest
2 голосов
/ 18 февраля 2010

я расширяю htmlhelper.но я не могу вызвать его рендерацию.

 using System.Text;
 using System.Web.Mvc;
 using System.Web.Mvc.Html;
 public static class ViewHelpers
    {
        public static string Text(this HtmlHelper htmlHelper, string name, object value, bool isEditMode)
        {
           htmlHelper.RenderAction(...) //cannot be called
        }
    }

как я могу вызвать действие RenderAction ???

Ответы [ 3 ]

3 голосов
/ 29 августа 2012

CoffeeCode был на правильном пути, но пространство имен для включения должно быть System.Web , System.Web.Mvc и System.Web.Mvc.Html .

using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Resources;
using System.Web.Routing;
using System.Text.RegularExpressions;

namespace xxx.yyy.Helpers {
    public static class HelperView {
        public static void RenderHeader(this HtmlHelper helper) {
            helper.RenderAction("Header", "Default", new { pageAction = helper.ViewContext.RouteData.Values["action"].ToString() });
        }
    }
}

http://msdn.microsoft.com/en-us/library/ee703490(v=vs.108).aspx

2 голосов
/ 18 февраля 2010

@ CoffeeCode, не могли бы вы объяснить, почему вы хотите это сделать?

Вообще говоря, вы должны вызвать помощника для возврата html в виде строки, которая затем отображается на странице.

Кажется немного странным хотеть сделать это внутри помощника. Во всяком случае, для меня.

редактировать

Я думаю, что помощник здесь может быть неправильным для вас. если вам нужен доступ к списку, но вы не хотите передавать его в представление, то помощник - это неправильное место. Возможно, вы захотите создать класс, который будет принимать список, что-то с ним делать, а затем возвращать html.

0 голосов
/ 19 февраля 2010

решение было очень простым.
добавить using Microsoft.Web.Mvc;
и при вызове RenderAction он запишет HTML-строку непосредственно в представление

...