Страница ошибки, когда не найдено ни одного результата - PullRequest
2 голосов
/ 23 декабря 2011

Я создаю приложение, которое развивает мои навыки C #, но не академично, поэтому, пожалуйста, вы можете помочь мне, я почти закончил, и я хочу, чтобы это было сделано до 12 января, потому что я ухожу в отпуск.

Проблема в том,Я хочу изменить свой код, чтобы он отображал страницу с ошибкой, когда поиск не найден, например, я искал событие, и появилась страница, сообщающая, что ничего не найдено, и нажмите эту кнопку, чтобы вернуться.Я использую MVC3 в C #, вот мой код поиска от моего контроллера:

public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
    {
        using (var db = new UniversityNewsEntities1())
        {
            ViewBag.CurrentSort = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "Name desc" : "";
            ViewBag.DateSortParm = sortOrder == "Date" ? "Date desc" : "Date";

            if (Request.HttpMethod == "GET")
            {
                searchString = currentFilter;
            }
            else
            {
                page = 1;
            }
            ViewBag.CurrentFilter = searchString;

            var FullArticle = from a in db.NewsItems
                       select a;
            if (!String.IsNullOrEmpty(searchString))
            {
                FullArticle = FullArticle.Where(a => a.Headline.ToUpper().Contains(searchString.ToUpper()));

            }
            switch (sortOrder)
            {
                case "Name desc":
                    FullArticle = FullArticle.OrderBy(a => a.Headline);
                    break;
                case "Date":
                    FullArticle =FullArticle.OrderBy(a => a.Posted);
                    break;
                case "Date desc":
                    FullArticle = FullArticle.OrderBy(a => a.Posted);
                    break;
                default:
                    FullArticle = FullArticle.OrderByDescending(a => a.Posted);
                    break;
            }

            int pageSize = 3;
            int pageNumber = (page ?? 1);
            return View(FullArticle.ToPagedList(pageNumber, pageSize));
        }
    }  

Этот код полностью работает, и все, что мне нужно, это способ, который сообщит, кто когда-либо использует это, когда они что-то ищут, и если егостраница не найдена, появится страница, сообщающая, что ничего не найдено, перейдите по гиперссылке.Я использую ASP.NET MVC3, и это мой главный контроллер, и все работает, чтобы знать.

1 Ответ

4 голосов
/ 23 декабря 2011

Сначала проверьте, были ли найдены какие-либо результаты.Удалите эту строку:

return View(FullArticle.ToPagedList(pageNumber, pageSize));

с чем-то вроде

var results = FullArticle.ToPagedList(pageNumber, pageSize);
if (results.Any()) 
{
    return View(results);
}
return RedirectToAction("Error");

Вам необходимо добавить новое действие контроллера в NewsController

public ActionResult Error()
{
    return View();
}

Весь HTML дляс отображением ошибки и обратной ссылки откроется новое представление (Views / News / Error.cshtml), которое можно попросить сгенерировать Visual Studio.

...