我正在创建一个提升我的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,这是我的主控制器,所有工作都可以解决。
答案 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生成。