我已经研究这个问题大约两个星期了,我认为是时候寻求帮助了......
我正在尝试让 MVCMusicStore 购物车教程在第 8 部分工作:http ://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-8 。我的项目的主要区别在于我使用的是数据库优先(而不是代码优先,用于使用实时/托管数据库的 MVC 实践)。
班级代码:
public partial class Cart
{
public int RecordId { get; set; }
public string CartId { get; set; }
public int AlbumId { get; set; }
public Nullable<int> Count { get; set; }
public Nullable<System.DateTime> DateCreated { get; set; }
public virtual Album Album { get; set; }
}
public partial class Album
{
public int AlbumId { get; set; }
public Nullable<int> GenreId { get; set; }
public Nullable<int> ArtistId { get; set; }
public string Title { get; set; }
public Nullable<decimal> Price { get; set; }
public string AlbumArtUrl { get; set; }
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
}
public class ShoppingCartViewModel
{
public List<Cart> CartItems { get; set; }
public decimal CartTotal { get; set; }
}
在 ShoppingCartViewModel 中填充 CartItems 的函数:
public List<Cart> GetCartItems()
{
return db.Carts.Where(cart => cart.CartId == ShoppingCartId).ToList();
}
.cshtml 页面:
@model BoothPimps.ViewModels.ShoppingCartViewModel
@foreach (var item in Model.CartItems)
{
<tr id="row-@item.RecordId">
<td>
@Html.ActionLink(item.Album.Title, "Details", "Store", new { id = item.AlbumId }, null)
</td>
</tr>
}
这是 Model.CartItems 的图像,除了链接的专辑数据之外的所有内容都填充: http : //s1253.photobucket.com/albums/hh585/codingcoding1/?action=view¤t=image1.jpg (项目名称在任何地方都被删除)
此处的代码错误:
@Html.ActionLink(item.Album.Title, "Details", "Store", new { id = item.AlbumId }, null)
问题:item.Album 始终为空。
Album.AlbumId = Cart.AlbumId 应该将专辑数据链接到购物车,这样它就不会返回 null 但它不起作用。然而,在以前的教程中,当我做同样的事情,但要从专辑中获取流派或艺术家数据时,链接数据有效,我能够检索这些值,如下所示:
@Html.DisplayFor(model => model.Genre.Name)
@Html.DisplayFor(model => model.Artist.Name)
那么为什么 model.Genre 和 model.Artist 返回值但 item.Album 为空呢?我不是使用“虚拟”关键字以相同的方式链接这些值吗?我错过了什么?
谢谢你看看这个。