Asp.net mvc 2 处理异常

Asp.net mvc 2 处理异常,asp.net-mvc-2,argumentnullexception,Asp.net Mvc 2,Argumentnullexception,我正试图从我的数据库中返回五篇最新的文章,这样我就可以在索引页上的一些辅助导航中放置指向它们的链接。根据Steven Sanderson在其著作《WebUI》(MVC部分)和《Domain》(EF4/域模型部分)中的建议,我将我的MVC项目分为两个子项目 我有一个基本的存储库,主要通过为EF4提供一个门面以及处理模型验证等其他任务来完成繁重的工作。我有一个简单的方法返回最后五篇文章: public List<Article> LastFive() { return _site

我正试图从我的数据库中返回五篇最新的文章,这样我就可以在索引页上的一些辅助导航中放置指向它们的链接。根据Steven Sanderson在其著作《WebUI》(MVC部分)和《Domain》(EF4/域模型部分)中的建议,我将我的MVC项目分为两个子项目

我有一个基本的存储库,主要通过为EF4提供一个门面以及处理模型验证等其他任务来完成繁重的工作。我有一个简单的方法返回最后五篇文章:

public List<Article> LastFive()
{
    return _siteDB.Articles.OrderByDescending(a => a.LastModified).Take(5).ToList();
}
public List LastFive()
{
return _siteDB.Articles.OrderByDescending(a=>a.LastModified).Take(5.ToList();
}
我的问题是,我必须在我的索引页面上使用另外两个类似的功能来显示最近的五篇评论和网站新闻。如果数据库中没有任何内容,则返回ArgumentNullExceptions(这很好)。我想做的是显示一条简单的“No articles/reviews/news exist”(无文章/评论/新闻存在)消息,但由于这三条消息都会引发相同的异常,因此我不确定如何捕获正确的异常并根据引发异常的类别显示正确的消息


我不确定是否应该为这些情况将Exception子类化,如果我这样做了,我将把它们扔到哪里。或者,如果有一种方法可以确定异常的来源,以便我能够正确地处理它们。

我猜是ToList()崩溃了

尝试以下操作(未运行):

public List LastFive()
{
var result=\u siteDB.Articles.OrderByDescending(a=>a.LastModified).Take(5);
如果(结果!=null)
返回result.ToList();
其他的
返回null;
}

您的调用代码应该测试空值,如果是,则显示一条消息。

我对您报告的结果感到非常困惑。当查询没有结果时,实体框架应返回空IEnumerable。我从未见过它在这种情况下抛出异常。你对实体框架模板做过什么奇怪的事情吗


您应该能够一步一步地浏览代码,了解ArgumentNullException的确切来源。(我暗自怀疑这是在你发布的方法之外发生的)。

没有,我没有接触模板。一般来说,我对.NET还不熟悉,所以我不会到处闲逛。我来看看异常实际被抛出的位置。唉,原来我是个白痴。谢谢你的帮助。钻研我的控制器试图做的事情,让我看到了与facepalm相称的钻头。
public List<Article> LastFive()
{
    var result =  _siteDB.Articles.OrderByDescending(a => a.LastModified).Take(5);

    if (result != null)
        return result.ToList();
    else
        return null;
}