我如何坚持HTML格式为C#中的String对象?

下面是我有:

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

其中c.DepartmentAbbr.ToString()和c.DepartmentName.ToString()的两个字段被从使用LINQ数据上下文选择。

下面就是我基本上想:

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

,使得第一个字以粗体显示出来。以上只是显示了大胆的标签,一切的文字文本。我想我将需要使用的String.Format,但我不能完全找到一个很好的例子,可以帮助我知道如何使用它做我想做的。

更新

下面是更多的一些细节,我不认为是重要的,但我认为现在他们必须。

下面是我使用的控制。 ASPX代码:

 <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>

和我将项目添加到在C#中使用LINQ此控制:

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()));
        }
    }
}

在RadComboBoxItem对象可以接受(),(字符串文本),或(字符串文本,字符串值),我使用了后者。

有帮助吗?

解决方案 6

由于我研究越来越多,我已经差不多得出的结论是什么,我想做的事情是不可能的。我使用的是radcombobox控件粘物品进入,但我有做一些funcky东西与LINQ在服务器端,使得我必须坚持项目为使用Items.Add方法只接受系统的组合框。串。谢谢大家的帮助和意见,但我想我只是将不得不凑合一下我在这种情况下。

下面是更多的一些细节,我不认为是重要的,但我认为现在他们必须。

下面是我使用的控制。 ASPX代码:                                                          

和我将项目添加到在C#中使用LINQ此控制:     保护无效的Page_Load(对象发件人,EventArgs的)     {         如果(!的IsPostBack)         {             VAR =简称从C中DB.Departments                        其中c.DepartmentAbbr!= “BInst”                        选择℃;

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

在RadComboBoxItem对象可以接受(),(字符串文本),或(字符串文本,字符串值),我使用了后者。我敢肯定,现在,由于在RadComboBoxItem只接受字符串,我不能做的项目HTML格式而不使用ASPX项模板标签的限制。不幸的是,我的情况,我不能这样做,因为这已经引起了我一些其他的问题,我为什么我做什么我目前正在做的事。

其他提示

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

下面是一个伟大的参考字符串格式化在C#:

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

对于任何试图做到这一点在 ASP.NET MVC ...

此不起作用:

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

在大胆的标记HTML编码,如你所期望的。

然而,这种工作的治疗:

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

我想你最好改变字符串s MvcHtmlString对象。

我猜你正在寻找一种方式来让对象c吐出一个HTML格式的字符串。

以此为一个示例:

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;
      }
   }
}

和假设我们实例化这个类是这样的:

myExample example = new myExample("tommieb75");

和发出在物体上的简单ToString()呼叫打印出用于粗体一个HTML标记如下所示

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

此实施例用于说明如何使用自定义参数来ToString()方法,这样就可以使用粗体或斜体HTML标签嵌入或基于用于这个类的ToString函数的参数格式化值的任何其他方式

这是否回答你的问题?

我认为这个问题是其他地方。你把这个字符串中Label控件或文字控制?如果它是一个标签,我相信这是逃避你的文字。把它放在一个asp:文字控制来代替。而且顺便说一句,你不需要调用的ToString()这么多。你可以使用:

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

和toString()将基本上被调用给你。

如果您输出此网页上的 - 尝试使用:

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

方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top