try
{
var orderedListOfRfidTags = uow.RfidTags.ToList().OrderBy(t => int.Parse(t.Number));
return View(orderedListOfRfidTags);
}
catch
{
var orderedListOfRfidTags = uow.RfidTags.OrderBy(t => t.Number).ToList();
return View(orderedListOfRfidTags);
}
MVC3 - 在发布模式下,这仍然会在第一行var ordreedListOfRfidTags上失败...
我想知道为什么尝试捕获不是尝试和捕捉?
然后按F10它会转到这里..这是我的ORM包装器的一部分...嗯我想知道这是不是问题。
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (_unitOfWorkScope != null)
{
_unitOfWorkScope.Dispose();
}
base.OnResultExecuted(filterContext);
}
答案 0 :(得分:2)
在您尝试访问列表中的元素之前,不会调用传递给OrderBy的委托。
所以我认为错误没有被捕获,因为在动作方法返回之后,在呈现视图之前不会枚举您的集合。
答案 1 :(得分:0)
这是一个糟糕的设计;你不应该在你的catch中有任何可能引发另一个异常的代码。
如果我理解您的代码,您希望尝试将RFID解析为int
,但如果失败则会重新依赖string
?
如果你不能保证Numbers
的{{1}}不会是一个数字(这似乎是一个愚蠢的命名结构),那么我会把它留作字符串排序和抛弃int解析
答案 2 :(得分:0)
答案是LightSpeed失败了。一旦添加了支持(很快 - 很棒的产品!)一切都运行良好:
// trying to convert to an int.. if fail, use string
// need up to date nightly build of LS3.1 for this to work
// otherwise trycatch will fail due to LS crashing out.
try
{
var orderedListOfRfidTags = uow.RfidTags
.OrderBy(t => Convert.ToInt32(t.Number))
.ToList();
return View(orderedListOfRfidTags);
}
catch
{
var orderedListOfRfidTags = uow.RfidTags
.OrderBy(t => t.Number)
.ToList();
return View(orderedListOfRfidTags);
}