Frage

Wie bleibe ich HTML-Formatierung in ein String-Objekt in C #?

Hier ist, was ich habe:

c.DepartmentAbbr.ToString() + " - (" + c.DepartmentName.ToString() + ")"

wobei c.DepartmentAbbr.ToString () und c.DepartmentName.ToString () sind beide Felder aus einem Datenkontext ausgewählt wird LINQ verwenden.

Hier ist, was ich im Wesentlichen will:

"<b>" + c.DepartmentAbbr.ToString() + "</b> - (" + c.DepartmentName.ToString() + ")"

so dass das erste Wort erscheint in Fettschrift. Die oben zeigt nur die wörtliche Text mit den fett-Tags und alles. Ich nehme an, ich muss String.Format verwenden, aber ich kann nicht ganz ein gutes Beispiel finden, die mir hilft, wie es verwenden, um zu tun, was ich will.

Update

Hier sind ein paar mehr Details, die ich nicht waren glaubte wichtig, aber ich denke, jetzt sie sein müssen.

Dies ist die Kontrolle Ich verwende. ASPX Code:

 <telerik:RadComboBox ID="rcbDepartments" runat="server" AppendDataBoundItems="True"
        AutoPostBack="true" NoWrap="true" Width="250px">
        <Items>
            <telerik:RadComboBoxItem Text="All Departments" Value="-1" />
        </Items>
    </telerik:RadComboBox>

Und ich Elemente dieser Steuerung mit LINQ in C # und füge hinzu:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var abbr = from c in DB.Departments
                   where c.DepartmentAbbr != "BInst"
                   select c;

        foreach (var c in abbr)
        {
            String s = String.Format("{0} - ({1})", c.DepartmentAbbr, c.DepartmentName);
            rcbDepartments.Items.Add(new RadComboBoxItem(s, c.DepartmentID.ToString()));
        }
    }
}

Das RadComboBoxItem Objekt akzeptiert entweder (), (String text) oder (String Text, String-Wert), und ich bin mit dem letzteren.

War es hilfreich?

Lösung 6

Wie ich habe mehr und mehr erforscht habe ich komme ziemlich zu dem Schluss, dass das, was ich tun möchte, ist nicht möglich. Ich bin mit einem RadComboBox die Einzelteile in bleiben, aber ich habe einige funcky Zeug mit LINQ auf der Serverseite zu tun, so dass ich die Einzelteile in der Combo-Box zu bleiben haben die Items.Add Methode verwendet, die nur System akzeptiert System.String. Vielen Dank für Ihre Hilfe und Kommentare, aber ich denke, ich werde müssen nur mit dem auskommen, was ich in diesem Fall haben.

Hier sind ein paar mehr Details, die ich nicht waren glaubte wichtig, aber ich denke, jetzt sie sein müssen.

Dies ist die Kontrolle Ich verwende. ASPX Code:                                                          

Und ich bin das Hinzufügen von Elementen zu dieser Steuerung mit LINQ in C #:     protected void Page_Load (object sender, EventArgs e)     {         if (! IsPostBack)         {             var Abk = von c in DB.Departments                        wo c.DepartmentAbbr! = "Binst"                        wählen c;

        foreach (var c in abbr)
        {
            String s = String.Format("{0} - ({1})", c.DepartmentAbbr, c.DepartmentName);
            rcbDepartments.Items.Add(new RadComboBoxItem(s, c.DepartmentID.ToString()));
        }
    }
}

Das RadComboBoxItem Objekt akzeptiert entweder (), (String text) oder (String Text, String-Wert), und ich das letzteres verwenden. Ich bin ziemlich sicher, dass nun, dass aufgrund der Beschränkungen des RadComboBoxItem nur Strings zu akzeptieren, dass ich nicht die HTML-Formatierung auf den Elementen tun kann, um die Artikel Template-Tags in ASPX ohne Verwendung. Leider für meine Situation kann ich dies nicht tun, weil das bereits einige anderen Probleme für mich zu verursachen, die ich, warum ich tue, was ich zur Zeit zu tun versuchen.

Andere Tipps

String.Format("<b>{0}</b> - ({1})", c.DepartmentAbbr, c.DepartmentName)

Hier ist eine große Referenz auf String-Formatierung in C #:

http://blog.stevex.net/string-formatting-in-csharp /

Für jeden, der versucht, dies zu tun in ASP.NET MVC ...

Das funktioniert nicht:

<%=String.Format(resourceString, "<b>" & Model.UserName & "</b>")%>

Die fett-Tags sind HTML-kodierte, wie man erwarten würde.

Dies funktioniert jedoch eine Behandlung:

<%=String.Format(resourceString, MvcHtmlString.Create("<b>" & Model.UserName & "</b>")%>
MvcHtmlString s = MvcHtmlString.Create(String.Format("{0} - ({1})", c.DepartmentAbbr, c.DepartmentName));

Ich glaube, Sie besser das Objekt zu MvcHtmlString s String ändern.

Ich denke, Sie nach einem Weg suchen, um das Objekt c haben eine HTML-formatierten String auszuspucken.

Nehmen Sie dies als ein Beispiel:

public class myExample : IFormattable{
   private string myExampleStr;
   public myExample(string sampleStr){
      this.myExampleStr = sampleStr;
   }

   /* Implement an Equals() function - OVERRIDE! */
   public override bool Equal(object obj){
      return true;
   }

   /* Implement an ToString() function - OVERRIDE */
   public override string ToString(){
      return this.myExampleStr;
   }

   /* Implement an GetHashCode() function - OVERRIDE */
   public override int GetHashCode(){
      return this.myExampleStr.GetHashCode();
   }

   /* Here we implement the IFormattable interface */
   public string ToString(string format) {
      return this.ToString(format, null);
   }

   public string ToString(IFormatProvider formatProvider) {
      return this.ToString(null, formatProvider);
   }

   public string ToString(string format, IFormatProvider formatProvider) {
      if (string.IsNullOrEmpty(format)) format = "G";
      if (formatProvider != null) {
         ICustomFormatter formatter = formatProvider.GetFormat(this.GetType()) as ICustomFormatter;
         if (formatter != null)
            return formatter.Format(format, this, formatProvider);
      }
      switch (format) {
         case "b": return string.Format("<b>{0}</b>", this.myExampleStr);
         case "i": return string.Format("<i>{0}</i>", this.myExampleStr);
         default: return this.myExampleStr;
      }
   }
}

Und wenn wir diese Klasse wie folgt instanziiert:

myExample example = new myExample("tommieb75");

Und Ausgabe einen einfachen ToString() Anruf auf dem Objekt ein HTML-Tag für fett zu drucken, wie unten gezeigt

Console.WriteLine("{0}", example.ToString("b"));
// Output would be <b>tommieb75</b>

Dieses Beispiel dient zur Veranschaulichung, wie einen benutzerdefinierten Parameter an die ToString() Methode zu verwenden, so dass Sie fett oder kursiv HTML-Tags eingebettet ist, oder jede andere Art und Weise der Formatierung Wert basierend auf dem Parameter für die ToString Funktion dieser Klasse verwendet werden verwenden können .

Enthält diese Antwort Ihre Frage?

Ich denke, das Problem woanders ist. Setzen Sie diese Zeichenfolge in einem Label-Steuerelement oder eine Steuerung Literal? Wenn es ein Etikett ist, halte ich es für den Text für Sie ist entkommen. Legen Sie es in einem asp: Literal statt Kontrolle zu bringen. Und btw, die Sie nicht so viel zu nennen .ToString () benötigen. Sie können einfach verwenden:

"<b>" + c.DepartmentAbbr + "</b> - (" + c.DepartmentName + ")"

und ToString () wird im Wesentlichen für Sie aufgerufen werden.

Wenn Sie dies auf einer Webseite sind ausgibt - versuchen Sie es mit der:

Server.HtmlEncode(string)
Server.HtmlDecode(string)

Methoden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top