C# 包含方法
本文关键字:方法 包含 | 更新日期: 2023-09-27 18:20:06
我的网站有一列显示新闻。包含"奖品"一词的新闻的 DIV-s 必须涂成绿色。(如果一个人创建了一个记录(新闻(而没有指定奖品(没有"奖品"一词(,则不需要绿色。但是如果一个人填写了现场模型。奖品(所以在文本中我们有一个词"奖品"(,div必须涂成绿色。
在创建新闻的视图中,有一个字段model.Prize
<div class="editor-field">
@Html.TextAreaFor(model => model.Prize,4,55,null)
@Html.ValidationMessageFor(model => model.Prize)
</div>
模型的值。奖品采用控制器,创造新的新闻记录。
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");
}
在新闻控制器块的另一种方法中,我显示新闻:
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涂成绿色。
但是,如果n.Description
包含"奖品"一词,我怎么能得到ViewBag.IsPrize == true
,如果不是,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);
但它用绿色描绘了所有新闻,而不仅仅是那些包含"奖项"一词的新闻。
听起来你想这样做:
@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>
}
首先尝试将属性添加到模型中而不是添加到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>
}
我还没有验证代码,但请尝试一下。