2017-08-21 18 views
-1

我有預約系統,其中預約日期由DateFrom - DateTo屬性範圍設置。現在我想將.alert類指定給那些即將到期的預訂(1天到期)。如何僅爲當前對象設置類別

問題是,如果預訂即將過期,不僅此預訂有.alert課程設置,而且還包括所有其他預訂,所以所有<tr>都是紅色,即使只有一個預定。如何將它僅綁定到當前的保留?

條件

foreach(Reservation r in res) 
     { 
      bool varovani; 
      if (r.DateTo.AddDays(-1).Day <= DateTime.Now.Day) 
      { 
       varovani = true; 

      } 
      else 
      { 
       varovani = false; 
      } 
      ViewBag.Varovani = varovani; 
     } 

表中查看

<tbody> 
    @foreach (Reservation r in Model) 
    { 
     string alertClass = ""; 
     if (ViewBag.Varovani == true) 
     { 
      alertClass = "danger"; 
     } 
     else 
     { 
      alertClass = ""; 
     } 
     <tr class="@alertClass"> 

      <td>@r.Reserved.Id</td> 
      <td>@r.Name</td> 
      <td>@r.DateFrom</td> 
      <td>@r.DateTo</td> 
      <td> 

        @Ajax.ActionLink("Detail", "Detail", "Skies", new { id = r.Reserved.Id }, new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "modalContent", OnBegin = "openModalWindow" }) 

      </td> 
      <td> 
       @Html.ActionLink("Edit", "Edit", "Reservation", new { id = r.Id }, null) 
       @Html.ActionLink("Delete", "Delete", "Reservation", new { id = r.Id }, new { onclick = "return confirm('Přejete si opravdu smazat tuto výpujčku? " + r.Name + "');" }) 
      </td> 
     </tr> 
     } 
</tbody> 
+1

您正在根據ViewBag項目的值設置類,這意味着它最終會發生在所有事情上。您需要根據該預訂進行設置。我會將一個屬性添加到'Reservation'視圖模型,然後在那裏檢測它。 – nurdyguy

回答

0

出現這種情況的原因是因爲ViewBag.Varovani是一個布爾值。因此,每次迭代通過時,都會覆蓋「Varovani」bool值。你想要做什麼是屬性添加到您Reservation類:在你看來

public class Reservation 
{ 
    //Rest of class 

    public bool Varovani => DateTo.AddDays(-1).Day <= DateTime.Now.Day; 
} 

然後:

<tbody> 
@foreach (Reservation r in Model) 
{ 
    <tr class="@(r.Varovani ? "danger" : "")"> 
     <td>@r.Reserved.Id</td> 
     <td>@r.Name</td> 
     <td>@r.DateFrom</td> 
     <td>@r.DateTo</td> 
     <td> 
       @Ajax.ActionLink("Detail", "Detail", "Skies", new { id = r.Reserved.Id }, new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "modalContent", OnBegin = "openModalWindow" }) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", "Reservation", new { id = r.Id }, null) 
      @Html.ActionLink("Delete", "Delete", "Reservation", new { id = r.Id }, new { onclick = "return confirm('Přejete si opravdu smazat tuto výpujčku? " + r.Name + "');" }) 
     </td> 
    </tr> 
} 
</tbody> 

另外,您可以在您的視圖執行邏輯(儘管除非我不會推薦它你不能修改Reservation類):

@foreach (Reservation r in Model) 
{ 
    string alertClass = ""; 
    if (r.DateTo.AddDays(-1).Day <= DateTime.Now.Day) 
    { 
     alertClass = "danger"; 
    } 
    else 
    { 
     alertClass = ""; 
    } 

    //Rest of your original Razor 

免責聲明 我不知道「Varovani」是什麼意思,所以如果它正確地描述你的邏輯,那麼只用它作爲你的屬性名稱。

+0

完美!而varovaní意味着用英語警告,對此表示遺憾。 – pajicekkralicek

相關問題