Απόδοση αυτόματου κλεισίματος Tag σε ASP.NET προσαρμοσμένο στοιχείο ελέγχου που προέρχονται από Ελέγχου

ψήφοι
4

Δουλεύω σε Facebook FBML ελέγχει τη βιβλιοθήκη και θα ήθελα να δημιουργήσουν FBML μου ελέγχει κάπως με σχέδια όπως η βιβλιοθήκη ASP.NET WebControls. Έχω μια βασική κλάση που χειρίζεται την απόδοση από προεπιλογή? εδώ είναι να καταστήσει τη μέθοδο μου:


        protected override void Render(HtmlTextWriter writer)
        {
            AddAttributesToRender(writer);

            if (UseXfbmlSemantics)
            {
                writer.RenderBeginTag(ElementName);
                writer.EndRender();
                writer.RenderEndTag();
            }
            else
            {
                writer.RenderBeginTag(ElementName);
                writer.RenderEndTag();
            }
        }

Αυτό που θα ήθελα είναι η απόδοση να τροποποιηθεί με βάση UseXfbmlSemantics - αν είναι αλήθεια, θα πρέπει να καθιστούν, για παράδειγμα:

<fb:name uid=10300399458></fb:name>

Όταν είναι ψευδής, θα πρέπει να καταστεί μια αυτο-κλείσιμο ετικέτα:

<fb:name uid=10300399458 />

Μπορώ να πάρω το «αληθινό» προϋπόθεση για να λειτουργήσει σχεδόν σωστά, αλλά το αυτόματο κλείσιμο της ετικέτας φαίνεται να είναι ασυμβίβαστη με την Render- σύνολο μεθόδων. Δυστυχώς, αν αυτή είναι η περίπτωση αυτό σημαίνει, επίσης, ότι το σχέδιο AddAttributesToRender δεν θα μπορούσε να λειτουργήσει, είτε. Τι είναι στην πραγματικότητα παράγει είναι το εξής:


        <fb:name uid=10300399458>

        </fb:name>

Πώς μπορώ να πάρω HtmlTextWriter (ή που HtmlTextWriter χρειάζεται να χρησιμοποιήσετε) για να κάνει την καθιστούν μια αυτο-κλείσιμο ετικέτα; Ή, τουλάχιστον, πώς μπορώ να κάνω ότι δεν καθιστούν αυτό το προσωρινό διάστημα (έτσι ώστε οι ετικέτες ανοίγματος και κλεισίματος είναι ακριβώς δίπλα ο ένας στον άλλο);

Δημοσιεύθηκε 05/11/2008 στις 23:32
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
6

Αυτό θα πρέπει να πας - θα καταστήσει το <fb:name uid="00101010101"/>. Θα μπορούσατε επίσης να παρακάμψετε τις RenderBeginTag, RenderContents, RenderEndTag. Ανάλογα με το τι κάνετε εκεί μπορεί να είναι κάποια άλλα πράγματα που συμβαίνουν στο RenderControl που χρειάζεστε. Θα μπορούσατε επίσης να εξετάσει τη χρήση ενός ControlAdapter, αυτό μπορεί να σας δώσει την καλύτερη διαχωρισμός των λειτουργιών ελέγχου VS html έλεγχο γραφής.

public  class FbName:System.Web.UI.WebControls.WebControl
{

    protected override string TagName
    {
        get
        {
            return "fb:name";
        }
    }

    public override void RenderControl(HtmlTextWriter writer)
    {  
        RenderBeginTag(writer);// render only the begin tag.
        //base.RenderContents(writer);
        //base.RenderEndTag(writer);
    }

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.Write("<" + this.TagName);
        writer.WriteAttribute("uid", "00101010101");
        writer.Write("/>");

    }
}

-Ιάσονας

Απαντήθηκε 06/11/2008 στις 22:44
πηγή χρήστη

ψήφοι
3

Θα ήθελα να συστήσω να χρησιμοποιήσετε σταθερές HtmlTextWriter:

    protected override void Render(HtmlTextWriter writer)
    {
        AddAttributesToRender(writer);
        writer.Write(HtmlTextWriter.TagLeftChar); // '<'
        writer.Write(this.TagName);
        writer.Write(HtmlTextWriter.SpaceChar); // ' '
        writer.WriteAttribute("uid", "00101010101");
        writer.Write(HtmlTextWriter.SpaceChar); // ' '
        writer.Write(HtmlTextWriter.SelfClosingTagEnd); // "/>"
    }
Απαντήθηκε 29/08/2011 στις 13:41
πηγή χρήστη

ψήφοι
7

Δεδομένου ότι αυτό είναι το πάνω μέρος, ώστε ερώτηση που έρχεται, όταν ψάχνουν για «HtmlTextWriter ετικέτα αυτο κλείσιμο», αυτό είναι για όσους έρχονται εδώ που θέλει να ξέρει πώς να το κάνουμε:

writer.WriteBeginTag("tag");
writer.WriteAttribute("attribute", "attribute value");
// ... add other attributes here ...
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
Απαντήθηκε 12/09/2014 στις 18:22
πηγή χρήστη

ψήφοι
-1

εάν χρησιμοποιείτε το Visual Studio πάτε με αυτά τα βήματα:

Εργαλεία ---> Επιλογές ---> Επεξεργαστής κειμένου ---> HTML ----> μορφοποίηση ---> αφαιρέσετε Auto εισάγετε κοντά ετικέτα

Απαντήθηκε 26/02/2015 στις 08:37
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more