0

这似乎是一个相当简单的问题,但我一直遇到同样的异常,我不知道为什么。

我只能假设它与对子字符串在 VB.NET 中的工作方式的误解有关。

以下代码不断抛出 ArgumentOutOfRange 异常:

    <%=Html.Encode(IIf(item.description.Length > 150, item.description.Substring(0, 150), item.description))%>

现在这里应该发生的是,如果 item.description 超过 150 个字符,则输出前 150 个字符,否则输出整个字符串。问题是它不断尝试获取子字符串,而不管 if 语句的结果长度如何。

任何帮助将不胜感激。

4

3 回答 3

3

请改用 If(expression,truepart,falsepart) 运算符:IIF 运算符尝试评估真假部分,而 If 运算符仅尝试评估相关部分。

于 2012-12-01T20:18:42.260 回答
2

当您使用时,IIF您评估所有表达式 - 真和假的“分支”。

这意味着对于长度小于 150 个字符的字符串,您仍然调用item.description.Substring(0, 150),从而导致错误。

也许有一个item.ShortDescriptionwhich 只返回前 150 个字符,使用普通的IF/THEN.

于 2012-12-01T20:18:49.733 回答
0

尝试使用:

检查这个:IIf() 与 If

If(item.description.Length > 150) Then
  item.description.Substring(0, 150) 
Else 
  item.description
End If

或者,

If(item.description.Length > 150, item.description.Substring(0, 150), item.description)
于 2012-12-01T20:21:59.023 回答