0

MVCの学習を始めようとしています。Microsoft サイトで見つけた MVC Music Store プロジェクトをビルドしました。http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1 .

かなりうまく機能しましたが、変更しようとしたときに問題が発生しました。データを別のプロジェクトに入れたい。データ アクセスには Linq to Entities を使用しました。

これがデータにアクセスするための私のクラスです

public class clsUtilities
{
    Utilities.MVCMusicStoreEntities db = new Utilities.MVCMusicStoreEntities();

    public object GetAlbums(string GenreName)
    {
        var query = from tags in db.vieAlbumArtists
                    where tags.GenreName.Equals(GenreName)
                    select tags;

        return query;
    }
}

私のコントローラーでは、私のコードは

public ActionResult Browse2(string genre)
{
    // retrieve Genre and its associated albums from the database

    var genreModel = mcloUtilities.GetAlbums(genre);

    return View(genreModel);
}

ビューでcshtmlファイルを生成します

@model Utilities.vieAlbumArtist

@{
    ViewBag.Title = "Browse2";
}

これはすべて正常にコンパイルされますが、実行すると次のようになります。

ディクショナリに渡されたモデル アイテムのタイプは ですSystem.Data.Objects.ObjectQuery'1[Utilities.vieAlbumArtist]が、このディクショナリにはタイプ のモデル アイテムが必要Utilities.vieAlbumArtistです。

4

4 に答える 4

1

変化する

@model Utilities.vieAlbumArtist

@model IEnumerable<Utilities.vieAlbumArtist>

単一のインスタンスだけでなく、のリストを返しています。vieAlbumArtist

変更したい場合もあります

public object GetAlbums(string GenreName)

public IEnumerable<Utilities.vieAlbumArtist> GetAlbums(string GenreName)

通り過ぎるobjectsことは最善の考えではありません。

于 2012-05-24T22:09:34.467 に答える
0

私はあなたたちが私にくれたヒントの助けを借りてこれを解決することができました。

clsUtiliesから

  public class clsUtilities
    {
        Utilities.MVCMusicStoreEntities db = new Utilities.MVCMusicStoreEntities();

        public IEnumerable<Utilities.vieAlbumArtist> GetAlbums(string GenreName)
        {




        IEnumerable<vieAlbumArtist> query = from tags in db.vieAlbumArtists
                    where tags.GenreName.Equals(GenreName)

                    select tags;

            foreach (var n in query)
            {

            }

        return query;

        }

コントローラーから

 public ActionResult Browse2(string genre)
        {
            // retrieve Genre and its associated albums from the database


            var genreModel = mcloUtilities.GetAlbums(genre);


            return View(genreModel );
        }

ビューから

@model IEnumerable< Utilities.vieAlbumArtist> 


@{
    ViewBag.Title = "Browse Albums";
}





@foreach(var album in Model) 
{ 
   <ul>  
       <a href="@Url.Action("Details", new { id=album.AlbumId})">
       <img alt="@album.Title" src="@album.AlbumArtUrl" />
       <span>@album.Title (   @album.Name ) </span> </a>
       </ul>
} 











}
于 2012-06-04T19:33:00.237 に答える
0

これはあなたの問題です:

public object GetAlbums(string GenreName)

データをオブジェクトとして返しています。しかし、ビューは type のアイテムを受け取ることを期待していますUtilities.vieAlbumArtist。適切な型を返すようにメソッドを変更するかGetAlbums()、ビューが期待する型にコントローラーでキャストするようにしてください。

于 2012-05-24T22:09:16.437 に答える
-1

アルバムのリストを表示するには、これを試してください:

<ul>
@foreach(var item in vieAlbumArtist)
{
   <li>item.Name</li> //Not sure if you actually have a name property
}
</ul>
于 2012-05-24T22:10:20.600 に答える