尝试打印字符串的前250个字符,但得到ArgumentOutOfRangeExecption“错误

时间:2013-04-07 02:24:03

标签: c# entity-framework listview linq-to-entities asp.net-4.5

我将LINQ结果绑定到ListView并尝试仅打印“Synopsis”列中的前250个字符,但是当我尝试使用Substring时,我收到错误:

  

System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。参数名称:长度

导致错误的代码是:

<%#:Eval("Synopsis").ToString().Substring(0,250)%>

如果我同时删除ToString和Substring,则错误消失,但会打印整个概要。我做错了什么?

2 个答案:

答案 0 :(得分:1)

只要您的起始索引或长度超出字符串长度范围,您就会收到ArgumentOutOfRangeException异常。在你的情况下,我会说字符串很可能已经少于250个字符。你可能想要这样的东西:

<%#:Eval("Synopsis").ToString().Length > 250 ? Eval("Synopsis").ToString().Substring(0,250) : Eval("Synopsis").ToString()%>

答案 1 :(得分:0)

这意味着概要小于250个字符。通过检查字符串的长度是否大于250并减少请求的长度,可以很容易地解决这个问题。我不熟悉LINQ,但这是伪代码的解决方案:

var length_of_request;

if length of synopsis < 250 then:
     length_of_request = length of synopsis
else:
     length_of_request = 250

然后以SubString作为第二个参数调用length_of_request