Music Store学习笔记(2015年7月10日)
今天任务:对整体框架以及代码细节进行过滤式理解,调试功能。
一。出现:“存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。”
运行错语的原因是:
1、页面上注释了以下语名:@Html.HiddenFor(model => model.AlbumId),加上后,运行正常。
或2、Album类中的 [Bind(Exclude = "AlbumId")]好象有问题,导致在StoreManager-Edit视图表单递交时,AlbumID无法正确递交,总是为“0”,注释掉这一名,即可正确运行。(不知是否在按教程输入代码时,时否有错误所致)。
二。
1.{"DELETE 语句与 REFERENCE 约束\"FK_InvoiceLine_Album\"冲突。该冲突发生于数据库\"MvcMusicStore\",表\"dbo.OrderDetails\", column 'AlbumId'。\r\n语句已终止。"}
alter table MvcMusicStore.dbo.OrderDetails
drop CONSTRAINT FK_InvoiceLine_Album
2.{"DELETE 语句与 REFERENCE 约束\"FK_Cart_Album\"冲突。该冲突发生于数据库\"MvcMusicStore\",表\"dbo.Carts\", column 'AlbumId'。\r\n语句已终止。"}
alter table MvcMusicStore.dbo.Carts
drop CONSTRAINT FK_Cart_Album
3.
controller中的ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name");
与view的 @Html.DropDownList("GenreId", String.Empty)对应使用
若注释掉ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name");
则报错不存在具有键“GenreId”的“IEnumerable<SelectListItem>”类型的 ViewData 项。
4.Html.RenderAction("CartSummary", "ShoppingCart")需要return PartialView()
可以理解为,RenderAction只是一个框架,this.view生成时,给服务器一个get请求,控制器处理后,重新返回一个页面,填充这个框架。
5. Session[ShoppingCart.CartSessionKey] = null;在logoff()中添加此句