문제

I have a application that creates News Entries and displays 10 news. It should display the 10 "newest" news. As it is now it display the 10 oldest news.

How can I change that.. Do I change the controller so that the data is sorted by date? Or can I do it in the view?

Controller:

public ActionResult Index()
        {
            return View(db.News.ToList());
        }

 // GET: /Newss/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: /Newss/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include="ID,title,body,category,dateCreated")] News news)
        {
            if (ModelState.IsValid)
            {
                news.dateCreated = DateTime.Now;
                db.News.Add(news);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(news);
        }
도움이 되었습니까?

해결책

It's best to do this in your controller:

public ActionResult Index()
{
    return View(db.News.OrderByDescending(news => new.dateCreated).Take(10).ToList());
}

This way, you get the data sorted from the DB. In general, you should probably keep the view as 'codeless' as possible.

다른 팁

Use the below code to display 10 latest news:

public ActionResult Index()
{
return View(db.News.OrderByDescending(news => new.dateCreated).Take(10).ToList());
}

The above answers are great and work on the controller side. If you, for whatever reason, wanted to do it in the view, this is how it's done:

Ordering Model in View

@foreach (var item in Model.OrderBy(item => item.PostedDate))
{
   <tr>
     <td>
        @Html.DisplayFor(modelItem => item.Id)
     </td>
     <td>
        @Html.DisplayFor(modelItem => item.PostedDate)
     </td>
     <td>
        @Html.DisplayFor(modelItem => item.SomethingAmazing)
     </td>
   </tr>
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top