值不能为空

时间:2013-05-06 08:57:57

标签: asp.net-mvc

我已经为CRUD编写了ASP.NET MVC代码但是在更新,删除和详细信息页面时抛出了错误,因为值不能为null。我的代码如下:

public ActionResult Edit(int id=0) 
            {  
                var alb=db.Albums.FirstOrDefault(x=>x.AlbumId==id);
                return View(alb);
            }
public ActionResult Detail(int id=0) 
        {
            var alb=db.Albums.Find(id);
            return View(alb);   
        }
public ActionResult Delete(int id=0) 
        {
            var album = db.Albums.Find(id);
            return View(album);

        }

我的模特是

public class Album
    {
        public int AlbumId { get; set; }
        public int GenreId { get; set; }
        public int ArtistId { get; set; }
        public string AlbumTitle { get; set; }
        public String Price { get; set; }
        public String AlbumArtUrl { get; set; }
        public Genre Genre { get; set; }
        public Artist Artist { get; set; }
    }

这是因为变量alb和album显示空值而没有获得任何ID。 所以建议我这个。

1 个答案:

答案 0 :(得分:1)

  

这是因为变量alb和album显示为null   重视它没有得到任何ID

如果数据库中没有记录,那么您应该在代码中优雅地处理它。你应该有类似的东西:

var alb=db.Albums.FirstOrDefault(x=>x.AlbumId==id);
if (alb==null) {
    // TempData, simplest way to give you an example
    TempData["error_msg"] = "the record does not exists";   
    return RedirectToAction("index", "error");
}
return View(alb);
你的ErrorController中的

public ActionResult Index() {
    ViewBag.ErrorMsg = TempData["error_msg"];
    return View();
}

在错误控制器的视图(Index.cshtml)中

<h1>You have been, or trying to be, a naughty boy</h1>
<p>@ViewBag.ErrorMsg</p>

这是不是最优雅的解决方案,但足以让您入门。我认为我的答案中最重要的部分不是我给你的代码,而是建议处理代码中的那种情况(空值/缺失或无效记录)。