这是我的代码,它应该显示模式中的一些数据。目前我没有数据:
<div class="desc-plus-products align-centre ">
@{
var TheString = "";
if (item.Name.Length == 0)
{
TheString = "Empty Name String";
}
else
{
TheString = item.Name;
}
var maxLength = 20;
var trimmedString = TheString.Substring(0, Math.Min(TheString.Length, maxLength));
trimmedString = trimmedString.Substring(0, Math.Min(trimmedString.Length, trimmedString.LastIndexOf(" ")));
}
<p>@trimmedString</p>
<p>£@item.Price</p>
</div>
错误如下:
Length cannot be less than zero.
Parameter name: length
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
Source Error:
Line 112:
Line 113: var trimmedString = TheString.Substring(0, Math.Min(TheString.Length, maxLength));
Line 114: trimmedString = trimmedString.Substring(0, Math.Min(trimmedString.Length, trimmedString.LastIndexOf(" ")));
Line 115: }
Line 116: <p>@trimmedString</p>
Source File: D:\Websites\websitename\Views\Home\Index.cshtml Line: 114
我原以为if statement
会使错误消失,因为我检查字符串是否为空,如果是,我将字符串设置为临时字符串以与{{1}一起使用} 方法。
答案 0 :(得分:1)
如@apk的评论中所述 - 您所遇到的问题在第114行,如您的问题中所示,并且与拨打Substring
和LastIndexOf
有关。
trimmedString = trimmedString.Substring(0, Math.Min(trimmedString.Length, trimmedString.LastIndexOf(" ")));
对LastIndexOf()
的调用有可能返回-1
,这就是产生错误的原因:
长度不能小于零。
参数名称:长度
事实上,在您发布的问题中,它会显示发生此错误的特定行号。此外,重申评论中提到的内容,在调试器中单步执行此操作会立即引导您找到问题所在。将来,在调试过程中投入一点点精力将比在此处立即发布错误并等待响应(可能永远不会出现)节省更多时间。