在HTML中将HTML格式粘贴到System.String对象中

问题描述 投票:1回答:7

如何将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对象接受(),(String text)或(String text,String value),我使用后者。

c# asp.net string string.format
7个回答
9
投票
String.Format("<b>{0}</b> - ({1})", c.DepartmentAbbr, c.DepartmentName)

这是对C#中字符串格式的一个很好的参考:

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


4
投票

对于任何试图在ASP.NET MVC中执行此操作的人...

这不起作用:

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

正如您所期望的那样,粗体标签是HTML编码的。

但是,这是一种享受:

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

2
投票
MvcHtmlString s = MvcHtmlString.Create(String.Format("{0} - ({1})", c.DepartmentAbbr, c.DepartmentName));

我认为你最好将String更改为MvcHtmlString对象。


1
投票

我想你正在寻找一种方法让对象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函数的参数格式化值的任何其他方式。

这回答了你的问题了吗?


0
投票

我认为问题出在其他地方。您是将此字符串放在Label控件还是Literal控件中?如果它是一个标签,我相信它正在逃避你的文字。把它放在asp:Literal控件中。顺便说一句,你不需要调用.ToString()这么多。你可以使用:

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

基本上会为你调用ToString()。


0
投票

随着我的研究越来越多,我几乎得出结论,我想做的事情是不可能的。我正在使用RadComboBox来粘贴项目,但我必须在服务器端使用LINQ做一些有趣的事情,这样我必须使用Items.Add方法将项目粘贴到组合框中,该方法只接受系统。串。谢谢大家的帮助和评论,但我想我将不得不在这种情况下处理我所拥有的。

以下是我认为不重要的一些细节,但我认为现在必须这样。

这是我正在使用的控件。 ASPX代码:

我正在使用C#中的LINQ向该控件添加项:protected void Page_Load(object sender,EventArgs e){if(!IsPostBack){var abbr = from c.Departments中的c,其中c.DepartmentAbbr!=“BInst”选择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对象接受(),(String text)或(String text,String value),我使用后者。我现在很确定,由于RadComboBoxItem的限制只接受字符串,我不能在不使用ASPX中的项目模板标签的情况下对项目进行HTML格式化。不幸的是,对于我的情况,我不能这样做,因为这已经给我带来了一些其他问题,我为什么要做我目前正在做的事情。


-1
投票

如果您在网页上输出此内容 - 请尝试使用:

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

方法。

© www.soinside.com 2019 - 2024. All rights reserved.