在本教程的细节操作中,Scott 使用
if (dinner == null)
return View("NotFound");
else
return View("Details", dinner);
返回 404 Not Found 消息视图。
但在我下载的 NerdDinner 源代码中,有以下几行:
if (dinner == null) {
return new FileNotFoundResult { Message = "No Dinner found for that id" };
}
这转到 FileNotFoundResult 那里有这个:
public class FileNotFoundResult : ActionResult
{
public string Message {
get;
set;
}
public override void ExecuteResult(ControllerContext context) {
throw new HttpException(404, Message);
}
}
就是这样。从这里开始对 NotFound.aspx 视图的引用是如何产生的?我无法找到它是如何映射到 NotFound.aspx 的,尽管 NotFound.aspx 确实存在于 Dinners 视图文件夹中。web.config 中也没有任何内容。
上面的代码来自 Change Set 41262 而不是 1.0 版本。
问题(更清楚一点):“throw new HttpException(404, message)”怎么会返回 NotFound 视图?
有人请解释一下。