2013-06-26 39 views
0

我試圖從數據庫中使用linq在剃刀中返回一個數值。 當我嘗試什麼都沒有被返回。這是我做過的一個例子。這是不打印的變量是「grad_year」如果語句沒有在剃鬚刀中返回值

@{ 
    var trust = new trusteeEntities(); 
    var former = (from g in trust.Members 
       where g.status == "Former" 
       orderby g.lname ascending 
       select g); 
    var pos = 0; 
    foreach (var f in former) 
    { 
     <div class="member"> 
      <h6>@f.fname @f.lname @if (f.grad_year != null) { @string.Format("'{0:00}", f.grad_year); } @if (f.deceased == true){@Html.Raw("**")}</h6> 
     </div> 
    }      
} 
+1

您在數據庫中的「狀態」是「前」嗎?如果你在'foreach'上放置一個斷點,它會被擊中,而'former'是否有記錄? –

+0

我忘了說有一個變量不打印。這是grad_year。其他一切都打印出來。 @GrantWinney – Paradigm

+3

該代碼可能屬於控制器。 – James

回答

0

它可能不會被輸出,因爲它只是執行'string.Format(..)'作爲語句。

您必須明確告訴Razor引擎輸出它。

這可以通過在其周圍放置<text></text>來完成。

@if (f.grad_year != null) { <text>@string.Format("'{0:00}", f.grad_year)</text> } 

編輯:

您也可以與conditional operator做到這一點,例如

@(f.grad_year != null ? @string.Format("'{0:00}", f.grad_year) : null) 
0

唯一合乎邏輯的結論是,你的former集合爲空(計數== 0),因此不執行的枚舉。確定爲什麼收集是空的來驗證。