Il mio sito ha una colonna che mostra le notizie. Il DIV-s con queste notizie che contengono la parola "premio" deve essere dipinto nel colore verde. (Se una persona ha creato un record (una notizia) senza specificare il Premio (senza la parola "Premio"), il verde non è necessario, ma se una persona ha compilato il modello del campo. Prezzo (quindi nel testo abbiamo una parola "Premio") il div deve essere verniciato in colore verde.C# Contiene il metodo
in una visione per la creazione di notizie c'è un campo model.Prize
<div class="editor-field">
@Html.TextAreaFor(model => model.Prize,4,55,null)
@Html.ValidationMessageFor(model => model.Prize)
</div>
il valore della model.Prize prende il controller che creano un nuovo record notizie
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");
}
Nell'altro metodo Blocco di Notizie Co ntroller visualizzo la notizia:
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);
Per ogni voce nella vista Blocco crea <div class ="newsWrapper">
in cui la notizia di inserimento record.
@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>
}
ho cercato di risolvere il problema ho aggiunto il nuovo div nel blocco vista:
@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>
}
Il GreenNewsClass
dipingeranno questo div in colore verde.
Ma come posso ottenere ViewBag.IsPrize == true
se n.Description
contiene la parola Premio, e ViewBag.IsPrize == false
se non è?
ho cercato di cambiare il metodo di blocco:
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);
ma dipinge tutte le notizie di colore verde, non solo quelli che contengono la parola Premio.
Sì, funziona !!! Grazie mille!!!!! – Dan
@Dylan dovresti contrassegnarlo come la risposta corretta, in modo che i futuri lettori possano usarlo. –