错误页面未找到结果时

时间:2011-12-23 13:03:30

标签: c# asp.net .net asp.net-mvc razor

我正在创建一个提升我的C#技能的应用程序没有任何学术成就,所以请你能帮我几乎完成,我想在1月12日之前完成,因为我要去度假。

问题是我想修改我的代码,所以当找不到搜索时它会显示一个错误页面,例如我搜索了一个事件,然后出现了一个页面,说没有找到任何内容,按此按钮返回。我在C#中使用MVC3这是我的控制器中的搜索代码:

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 个答案:

答案 0 :(得分:4)

首先检查是否找到了任何结果。删除这一行:

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生成。