私はこの問題を約2週間見てきましたが、助けを求める時が来たと思います...
パート8でMVCMusicStoreショッピングカートチュートリアルを機能させようとしています: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の画像は次のとおりです 。
ここでのコードエラー:
@Html.ActionLink(item.Album.Title, "Details", "Store", new { id = item.AlbumId }, null)
問題:item.Albumは常にnullです。
Album.AlbumId = Cart.AlbumIdは、アルバムデータをカートにリンクして、nullを返さないようにする必要がありますが、機能しません。ただし、以前のチュートリアルでは、同じことを行うが、アルバムからジャンルまたはアーティストのデータを取得すると、リンクされたデータが機能し、次のように値を取得できます。
@Html.DisplayFor(model => model.Genre.Name)
@Html.DisplayFor(model => model.Artist.Name)
では、なぜmodel.Genreとmodel.Artistは値を返しますが、item.Albumはnullですか?「virtual」キーワードを使用して、これらの値を同じ方法でリンクしていませんか?私は何が欠けていますか?
これを見てくれてありがとう。