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);

但它用绿色描绘了所有新闻,而不仅仅是那些包含"奖项"一词的新闻。

C# 包含方法

听起来你想这样做:

@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>
}

我还没有验证代码,但请尝试一下。