如何将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),我正在使用后者。
答案 0 :(得分:9)
String.Format("<b>{0}</b> - ({1})", c.DepartmentAbbr, c.DepartmentName)
以下是C#中字符串格式的一个很好的参考:
答案 1 :(得分:4)
对于任何试图在 ASP.NET MVC ...
中执行此操作的人这不起作用:
<%=String.Format(resourceString, "<b>" & Model.UserName & "</b>")%>
粗体标签是HTML编码的,正如您所期望的那样。
然而,这是一种享受:
<%=String.Format(resourceString, MvcHtmlString.Create("<b>" & Model.UserName & "</b>")%>
答案 2 :(得分:2)
MvcHtmlString s = MvcHtmlString.Create(String.Format("{0} - ({1})", c.DepartmentAbbr, c.DepartmentName));
我认为您最好将String更改为MvcHtmlString对象。
答案 3 :(得分: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标记,或基于用于{的参数格式化值的任何其他方式{1}}此类的功能。
这会回答你的问题吗?
答案 4 :(得分:0)
我认为问题出在其他地方。您是将此字符串放在Label控件还是Literal控件中?如果它是一个标签,我相信它正在逃避你的文字。把它放在asp:Literal控件中。顺便说一句,你不需要调用.ToString()这么多。你可以使用:
"<b>" + c.DepartmentAbbr + "</b> - (" + c.DepartmentName + ")"
和ToString()基本上都会为你调用。
答案 5 :(得分:0)
随着我的研究越来越多,我几乎得出的结论是,我想做的事情是不可能的。我正在使用RadComboBox来粘贴项目,但我必须在服务器端使用LINQ做一些有趣的事情,这样我必须使用Items.Add方法将项目粘贴到组合框中,该方法只接受系统。串。谢谢大家的帮助和评论,但我想我将不得不处理我在这种情况下的所作所为。
以下是我认为不重要的一些细节,但我认为现在它们必须是。
这是我正在使用的控件。 ASPX代码:
我正在使用C#中的LINQ向此控件添加项目: protected void Page_Load(object sender,EventArgs e) { if(!IsPostBack) { var abbr =来自DB.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格式化。不幸的是,对于我的情况,我不能这样做,因为这已经给我带来了一些其他问题,我为什么要做我目前正在做的事情。
答案 6 :(得分:-1)
如果您在网页上输出此内容 - 请尝试使用:
Server.HtmlEncode(string)
Server.HtmlDecode(string)
方法