0

我已经为 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 和专辑向我显示空值它没有得到任何 ID。所以建议我。

4

1 回答 1

1

这是因为变量 alb 和 album 向我显示空值它没有得到任何 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);

在您的错误控制器中

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>

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

于 2013-05-06T09:03:50.777 回答