2013-06-26 111 views
5

我的網站有一列顯示新聞。帶有這些包含「獎品」這個詞的新聞的DIV-s必須以綠色着色。 (如果一個人創建了一個沒有指定獎品的紀錄(新聞)(沒有「獎品」字樣),綠色並不是必要的,但是如果一個人填寫了場地模型。獎勵(所以在文中我們有一個詞「獎」)在div必須在綠色塗漆。C#包含方法

在視圖中創建的消息是有場model.Prize

<div class="editor-field"> 
    @Html.TextAreaFor(model => model.Prize,4,55,null) 
    @Html.ValidationMessageFor(model => model.Prize) 
</div> 

model.Prize的值取裏面創建一個新的消息記錄控制器

public ActionResult Create(Project project) 
{ 
    if (ModelState.IsValid) 
     {(some code...) 
     News n = new News(); 
     n.Date = DateTime.UtcNow; 
     n.Description = project.Shortdescription+"\r\n\Prize:\r\n"+project.Prize; 

     (some code…) 
     NewsController.Add(db,n); 
     db.SaveChanges(); 
     return RedirectToAction("Main"); 
    } 

在另一種方法Block of News Co ntroller我顯示消息:

public PartialViewResult Block() 
{ 
    List<News> news = new List<News>(); 
    Int32 count = 0; 

    foreach (News n in db.News.ToList().OrderByDescending(n => n.Date)) 
    { 
     if (count++ < 13) news.Add(n); 
    } 
    return PartialView(news); 

對於在視圖塊中的每個條目創建<div class ="newsWrapper">在新聞記錄插入。

@foreach (var item in Model){ 
    <div class ="newsWrapper"> 
    <p class="newsDate">@item.Date.AddHours(4).ToString("dd.MM.yyyy HH:mm")</p> 
    <a href="@item.Link"> @item.Title </a> 
    <p>@Html.Raw(Html.Encode(item.Description).Replace("\n", "<br />"))</p> 
</div> 
} 

我試圖解決這個問題 我塊視圖中的添加新的div:

@foreach (var item in Model) 
{ 
<div class ="newsWrapper"> 
     <div class="@(ViewBag.IsPrize == true ? "GreenNewsClass" : "")"> 
      <p class="newsDate">@item.Date.AddHours(4).ToString("dd.MM.yyyy HH:mm")</p> 
       <a href="@item.Link"> @item.Title </a> 
      <p>@Html.Raw(Html.Encode(item.Description).Replace("\n", "<br />"))</p> 
     </div> 
</div> 
} 

GreenNewsClass將在綠色色漆這個div。

但是我怎麼能得到ViewBag.IsPrize == true如果n.Description包含獎品字 和ViewBag.IsPrize == false如果不是?

我試圖改變方法塊:

public PartialViewResult Block() 
{ 
    List<News> news = new List<News>(); 
    Int32 count = 0; 

    foreach (News n in db.News.ToList().OrderByDescending(n => n.Date)) 
    { 
     if (count++ < 13) news.Add(n); 
     if (n.Description.Contains("Призы")) 
     { 
      ViewBag.IsPrize = true; 
     } 
     else { ViewBag.IsPrize = false; } 
    } 
    return PartialView(news); 

但它描繪爲綠色所有的新聞,不僅是那些包含單詞獎。

回答

2

這聽起來像你想這樣做:

@foreach (var item in Model) 
{ 
    <div class ="newsWrapper"> 
    <div class="@(item.Description.Contains("Призы") ? "GreenNewsClass" : "")"> 
     <p class="newsDate">@item.Date.AddHours(4).ToString("dd.MM.yyyy HH:mm")</p> 
     <a href="@item.Link"> @item.Title </a> 
     <p>@Html.Raw(Html.Encode(item.Description).Replace("\n", "<br />"))</p> 
    </div> 
    </div> 
} 
+0

是的,它的工作原理!非常感謝你!!!!! – Dan

+0

@Dylan你應該將此標記爲正確答案,以便將來的讀者可以使用它。 –

1

首先嚐試將屬性添加到您的模型,而不是你的ViewBag,好像你只需要在你的ViewBag單個值。

取出true條件,因爲它是多餘的,移動類定義的條件裏面這樣,當條件爲假 那麼div會是空的,請嘗試以下操作:

@foreach (var item in Model) 
{ 
    <div class ="newsWrapper"> 
     <div @(item.IsPrize? "class=GreenNewsClass" : "")> 
      <p class="newsDate">@item.Date.AddHours(4).ToString("dd.MM.yyyy HH:mm")</p> 
      <a href="@item.Link"> @item.Title </a> 
      <p>@Html.Raw(Html.Encode(item.Description).Replace("\n", "<br />"))</p> 
     </div> 
    </div> 
} 

我沒有驗證碼但嘗試一下。