2011-05-12 101 views
0
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 - 在Release模式,這仍然會在第一行VAR ordreedListOfRfidTags失敗...嘗試捕捉在MVC3不工作

我不知道爲什麼抓試試是不是想和追趕? enter image description here

然後按F10它到這裏..這是我的ORM包裝的一部分......嗯,我不知道這是否是問題。

protected override void OnResultExecuted(ResultExecutedContext filterContext) 
     { 
      if (_unitOfWorkScope != null) 
      { 
       _unitOfWorkScope.Dispose(); 
      } 

      base.OnResultExecuted(filterContext); 
     } 
+2

你確定它的失敗在第一行,而不是捕獲的一個嗎? (例如,uow.RfidTags是NULL) – 2011-05-12 22:59:31

+1

你能解釋你的代碼嗎? – 2011-05-12 23:02:37

+0

什麼嘗試,什麼捕捉?預期結果?實際結果?什麼失敗?如果第一行失敗會發生什麼? – 2011-05-12 23:05:01

回答

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); 
     } 
2

直到嘗試訪問列表中的元素時,纔會調用傳遞給OrderBy的委託。

所以我覺得是不是抓住了錯誤,因爲你的收藏,未列舉直到視圖渲染,動作方法返回之後。

0

這是一個不好的設計;你的catch中不應該有任何可能拋出另一個異常的代碼。

如果我理解你的代碼,你想試圖解析RFID到int,但如果失敗,你可以回退string

如果您不能gaurentee的RfidTag S的Numbers不會是一個數字(這似乎是一個愚蠢的命名結構),那麼我會離開它作爲一個字符串排序和溝INT解析