2010-12-30 4 views
2

Ich versuche eine Controller-Methode zu schreiben, die ein ActionResult zurückgibt.ASP.NET MVC: Wie benutzerdefinierte HTML-Helper von einer Controller-Methode aufgerufen werden?

Bei diesem Verfahren möchte ich mag: 1. Aufruf ein HTML-Hilfsmethode 2. Erfassung und Speicherung der erzeugten HTML HTML-Helfer in einem String 3. Kehren die Methode mit dem als JSON gewickelt HTML gerendert

Wie rufe ich die Html Helper-Methode von meiner Controller-Methode? Einfach mit der statischen Klasse HtmlHelper funktioniert nicht.

+0

Was ist dieser HTML-Helfer, den Sie anrufen möchten? Ich wette, es gibt eine Alternative. –

+0

Warum das HTML als JSON zurückgeben? Warum nicht einfach als HTML zurückgeben und eine Teilansicht verwenden? –

+0

@Darin: Nachdem ich über das Thema mehr nachgedacht habe, gibt es eine bessere Designalternative. Für meine Situation denke ich, es ist am besten, nur den HTML-Helper als eine Handlungsmethode zu refactorieren. @sean: Ich muss es als JSON zurückgeben, weil ich eine Fehlerprüfungsvariable zurückgeben und den Client über Fehler benachrichtigen muss. – burnt1ce

Antwort

4
var helper = new HtmlHelper<TModel>(new ViewContext(), new ViewPage()); 

Oder, wenn das nicht funktioniert, könnten Sie dies versuchen.

Stream filter = Stream.Null; 
StreamWriter writer = new StreamWriter(filter); 
var viewContext = new ViewContext(this.ControllerContext, 
    new WebFormView("MyView"), 
    new ViewDataDictionary(this.ViewData), 
    new TempDataDictionary(), writer); 
var helper = new HtmlHelper<TModel>(viewContext, new ViewPage()); 

Ersetzen Sie einfach TModel durch den Typ Ihres Modells.

Verwandte Themen