【问题标题】:Error Page When no Results are found找不到结果时的错误页面
【发布时间】:2011-12-23 13:03:29
【问题描述】:

我正在创建一个应用程序来提高我的 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,这是我的主控制器,一切正常。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 没有意识到它被称为NewsController。我将更新我的示例代码。
    • 抱歉,将公共 ViewResult 索引更改为公共 ActionResult 索引
    • @Html.ActionLink("返回搜索页面", "索引")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2012-02-23
    • 2016-04-07
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多