【发布时间】:2010-05-10 12:43:01
【问题描述】:
我正在绑定一些数据来控制,但想将特定字段的字符数限制为 30 个前字符。
如果可能的话,我想在 aspx 页面上这样做。
我试过了:
Text='<%# String.Format("{0}", Eval("Title")).Substring(0,30) %> '
但是得到了这个错误:
索引和长度必须引用一个 字符串中的位置。范围 名称:长度
【问题讨论】:
标签: c# asp.net data-binding
我正在绑定一些数据来控制,但想将特定字段的字符数限制为 30 个前字符。
如果可能的话,我想在 aspx 页面上这样做。
我试过了:
Text='<%# String.Format("{0}", Eval("Title")).Substring(0,30) %> '
但是得到了这个错误:
索引和长度必须引用一个 字符串中的位置。范围 名称:长度
【问题讨论】:
标签: c# asp.net data-binding
正如 Simon 所说,当字符串少于 30 个字符时,您会遇到此错误。
您可以在页面中编写受保护的方法-
protected string GetSubstring(string str, int length)
{
return str.Length > length ? str.Substring(0, length) : str;
}
像这样从 aspx 代码中调用它 -
Text='<%# String.Format("{0}", GetSubstring(Eval("Title").ToString(), 30) %>'
【讨论】:
当您的字符串长度不足 30 个字符时,会发生此错误。您应该先检查它,然后像在代码 sn-p 中那样剪掉不需要的字符。
String s = "hello";
if(s.Length > 30)
{
s.Substring(0,30);
}
在一行中:
s.Length > 30? s.Substring(0,30) : s;
【讨论】:
子字符串需要一个起始索引和一个长度。所以你应该确保字符串不少于30个字符,否则会报错。
【讨论】: