2011-03-18 4 views
2

J'ai une classe et je l'appelle à partir d'une page de vue de rasoir dans asp.net mvc3. Comment puis-je passer le HtmlHelper de la vue à ma classe? Je peux le faire mais je n'ai pas toutes les méthodes par exemple "RenderAction" et "RenderPartial" sont manquantes.MVC HtmlHelper outside Voir

Mise à jour

Je veux appeler une vue partielle, car il est plus facile à mettre en œuvre (par l'utilisateur final) et ne marche pas besoin d'une compilation complète de mon site.

Veuillez noter que l'exemple suivant n'est PAS exactement ce que je veux faire;) Je pense que mon exemple est stupide, mais il montre en général ce que je veux faire.

ViewPage: HtmlString str = new Renderer().Render(this.Html)

code (derrière):

public class Renderer 
    { 
     HtmlHelper _html; 

     public Renderer(HtmlHelper html) 
     { 
      this._html = html; 
     } 

     public HtmlString Render() 
     { 
      string result = string.Empty; 
      // getting html from a partial view 
      return new HtmlString(result); 
     } 
    } 
+1

Avez-vous 'using System.Web.Mvc.Html'? –

+0

sympa, en utilisant System.Web.Mvc.Html rend la méthode présente. Mais existe-t-il un moyen d'appeler "RenderAction" et de récupérer le HtmlString? – dknaack

+0

je ne peux pas poster mon extrait ici, s'il vous plaît voir la prochaine "réponse". Je vous remercie! – dknaack

Répondre

1

Le problème a été usings portés disparus.

using System.Web.Mvc.Html; 

rend les méthodes visibles Tout le reste était inutile.

0

RenderAction() et RenderPartial() sont des méthodes d'extension de HtmlHelper vous devez inclure l'espace de noms System.Web.MVC.

Mise à jour

Vous pouvez utiliser @Html.RenderPartial("view")

Ou vous pouvez créer une méthode d'extension de HtmlHelper

public static class HtmlHelperExtensions { 

    public static IHtmlString MyRenderer(this HtmlHelper helper) { 

    string html = String.Empty; 
    //generate HTML here 

    return new MvcHtmlString(html); 

    } 

} 
+0

agréable, en utilisant System.Web.Mvc.Html rend la méthode présente. Mais existe-t-il un moyen d'appeler "RenderAction" et de récupérer le HtmlString? – dknaack

+0

Vous pouvez appeler l'action de rendu à partir de HtmlHelper. Pouvez-vous fournir un code de ce que vous essayez de faire et nous pourrions peut-être mieux vous aider? –

+0

je ne pouvais pas fournir mon "exemple" ici comme un commentaire, s'il vous plaît voir la prochaine "réponse" – dknaack