2017-12-10 1 views
0

Ich versuche, etwas ähnlich wie Passing html markup into an ASP.NET User Control funktioniert, außer ich bin nicht MVC verwenden, und diese Antwort scheint nicht mehr zu funktionieren, bekomme ich 500 Fehler, wenn ich diesen Code kopiere und versuche, ihn so zu verwenden, wie er ist.HTML-Markup von .aspx User Control zu .ascx .NET 4.6

Ich habe die Notwendigkeit, ein Benutzersteuerelement zu einer Seite hinzuzufügen, die mehrere Bits von HTML-Markup darin benötigt, mit etwas ähnlich wie Vorlagen (ähnlich wie Angular-Vorlagen). In der Steuerung muss ich dann diese HTML-Teile greifen und sie in den Rest der Struktur einfügen. Ich muss auch in der Lage sein, ähnliche Attribute zu erhalten, wie ein normales Steuerelement funktionieren würde, und ihre Werte ebenfalls zu injizieren.

Zum Beispiel, hier ist das, was ich meine Entwickler in die aspx Seiten einfügen müssen:

<uc:FlexImgContent runat="server" FlexImgClasses="col-sm-4 col-lg-3" FlexContentClasses="col-sm-8 col-lg-9"> 
    <FlexImage> 
     <img class="img-responsive" width="100%" 
       src="assets/images/img.png" 
       alt="A descriptive alt tag"> 
    </FlexImage> 

    <FlexContent> 
     <h3>An h3 title (could be h2, h4 as well, hence the need for html)</h3> 

     <p>A block of content following. There could be more...</p> 

     <button class="btn" type="button">Like a button!</button> 
    </FlexContent> 
</uc:FlexImgContent> 

Im .ascx Kontrolle, ich so etwas wie dieses haben würde:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FlexImgContent.ascx.cs" Inherits="OUR.DOMAIN.STUFF.Core.CommonControl" %> 

<div class="flexible row"> 
    <div class="<%= this.FlexImgClasses %>"> 
     <figure> 
      <%= this.FlexImage %> 
     </figure> 
    </div> 

    <div class="<%= this.FlexContentClasses %>"> 
     <%= this.FlexContent %> 
    </div> 
</div> 

Und dann habe ich im Code hinterher einiges ausprobiert, hauptsächlich versucht, die oben verlinkte HTML-Markup-Antwort zu simulieren, aber ich konnte es nicht zum Laufen bringen.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace Sdc.Server.StampsWebsite._Controls 
{ 
    [ParseChildren(true, "FlexImage")] // How do I get multiple bits of data here, like FlexImage, FlexContent, FlexImgClasses, FlexContentClasses, etc? 
    public partial class FlexImgContent : System.Web.UI.UserControl 
    { 

     // Do I need this for each public string? 
     [PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)] 
     public string FlexImage { get; set; } 
     public string FlexContent { get; set; } 

     // From other answers, I know these are wrong but am thoroughly confused at how to get this right 
     public string FlexImageClasses { get; set; } 
     public string FlexContentClasses { get; set; } 

     // Does anything need to go into the page load? 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 
    } 
} 

Antwort

0

Ein weiterer Ansatz ist hier eine Reihe von literal controls zu haben, die Sie/auszublenden zeigen basierend auf Ihren Anforderungen. Sie könnten sogar ihren Inhalt dynamisch aus dem Code zurücksetzen, wenn Sie das brauchen würden.

+0

Vielleicht ist es nur ich - ich habe bemerkt, dass ich besser lerne, wenn ich etwas zu referenzieren habe - aber Antworten, die Beispiele enthalten, scheinen viel hilfreicher zu sein. Ich habe versucht, meinen Inhalt als '' einzufügen und dann den Literal im Code hinter einem get und set zu verarbeiten, aber ich bekomme Kompilierungsfehler. Ich habe im Grunde genommen auf diese Antwort verwiesen, um es zu versuchen: https://stackoverflow.com/a/1827822/1078904 - ist das, worauf Sie sich beziehen? –

Verwandte Themen