【问题标题】:Retrieving substring of a bound value检索绑定值的子字符串
【发布时间】:2010-05-10 12:43:01
【问题描述】:

我正在绑定一些数据来控制,但想将特定字段的字符数限制为 30 个前字符。

如果可能的话,我想在 aspx 页面上这样做。

我试过了:

Text='<%# String.Format("{0}", Eval("Title")).Substring(0,30) %> '

但是得到了这个错误:

索引和长度必须引用一个 字符串中的位置。范围 名称:长度

【问题讨论】:

    标签: c# asp.net data-binding


    【解决方案1】:

    正如 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) %>'
    

    【讨论】:

    • 可以让它变得更好。 protected string GetSubstring(object obj, int length) { string str = obj.ToString();返回 str.Length > 长度? str.Substring(0, 长度) : str; } ---- Text='' 你说什么?
    【解决方案2】:

    当您的字符串长度不足 30 个字符时,会发生此错误。您应该先检查它,然后像在代码 sn-p 中那样剪掉不需要的字符。

    String s = "hello";
    if(s.Length > 30)
    {
        s.Substring(0,30);
    }
    

    在一行中:

    s.Length > 30? s.Substring(0,30) : s;
    

    【讨论】:

      【解决方案3】:

      子字符串需要一个起始索引和一个长度。所以你应该确保字符串不少于30个字符,否则会报错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 1970-01-01
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 2018-05-22
        相关资源
        最近更新 更多