0

私はこの問題を約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」キーワードを使用して、これらの値を同じ方法でリンクしていませんか?私は何が欠けていますか?

これを見てくれてありがとう。

4

2 に答える 2

0

アルバムが null のアイテムがカートに入っている可能性はありますか?
このアクションの最後にブレークポイントを配置して、モデルが何で構成されているかを確認してください。

デバッガーを使用して、item.Album がなくなったポイントを見つけます。また、DB で Album を含まないアイテムがないか確認してください。エラーの原因がわかれば、ほとんどの場合は修正できますが、修正できない場合は、ここに調査結果を投稿してください。

于 2012-07-17T05:45:36.563 に答える