2016-05-06 29 views
0

Bevor Sie über die Verwendung von Ascx-Steuerelementen in MVC flackern, lassen Sie mich vortragen, dass dies nicht das ist, was ich tun möchte! Die über mir stehenden Kräfte möchten jedoch weiterhin die ascx-Kontrolle verwenden.Steuerung nicht in MVC-Ansicht rendern

Ich begann die unter Verwendung von folgenden in meinem Controller:

public ActionResult _CreditReporting(int id) 
{ 
    return PartialView(); 
} 

public static class myClass 
{ 
    public static string GenerateHtmlFromYourControl(this HtmlHelper helper, string contId) 
    { 
     var credControl = new _person_creditreporting_control(); 

     credControl.ID = contId; 

     var htmlWriter = new HtmlTextWriter(new StringWriter()); 

     credControl.RenderControl(htmlWriter); 

     return htmlWriter.InnerWriter.ToString(); 
    } 
} 

und die folgende meiner Ansicht

@using ds_iDMS.Controllers 
    <div> 
    @{ 
    Html.GenerateHtmlFromYourControl("_person_creditreporting_control.ascx"); 
    } 
    </div> 

Alles scheint richtig zu funktionieren und alle Parameter übergeben werden usw. Die Ascx-Seite wird jedoch nicht gerendert und ich bin mir nicht sicher, warum

+0

Haben Sie sich die Roh-HTML in Ihrem Browser, z. Chrome-Entwicklerwerkzeuge? Ist es ein gültiger HTML-Code? –

+0

@NamelessOne Ja in den Entwicklertools zeigt es, dass es gültig ist. Wenn ich manuell zur Ansicht navigiere, wird die Ansicht angezeigt, aber es wird überhaupt nichts wiedergegeben. – MaximusPrime

+0

Wenn du zu der Ansicht gehst, was sich innerhalb des "div" befindet? (Mit 'was' meine ich html-weise) –

Antwort

0

Ich würde die Ansicht zu

ändern
@using ds_iDMS.Controllers 
<div> 
    @Html.Raw(Html.GenerateHtmlFromYourControl("_person_creditreporting_control.ascx")) 
</div> 

Phil Haack has a good quick reference guide to different bits of the razor syntax. es könnte jetzt ein wenig veraltet sein, aber es ist immer noch eine sehr nützliche Übersicht.

+0

Sie können auch Ihre 'GenerateHtmlFromYourControl' Methode ändern, um' Raw' in 'helper' aufzurufen, und dann' 'Html.GenerateHtmlFromYourControl (" _ person_creditreporting_control.ascx ")' in Ihrer Sicht verwenden. –

+0

Das hat es geschafft! Danke für Ihre Hilfe! – MaximusPrime