0

私は次のコードを書きました:

public ActionResult Index()
        {                            
            var folders = Directory.GetDirectories(Server.MapPath("~/Content/themes/base/songs"));

            foreach (var folder in folders)
            {
                var movieName = new DirectoryInfo(folder).Name;
                string[] files = Directory.GetFiles(folder);
                string img = string.Empty;
                List<string> song = new List<string>();
                foreach (var file in files)
                {
                    if (Path.GetExtension(file) == ".jpg" ||
                        Path.GetExtension(file) == ".png")
                    {
                        img = Path.Combine(Server.MapPath("~/Content/themes/base/songs"), file);
                    }
                    else 
                    {
                        song.Add(Path.Combine(Server.MapPath("~/Content/themes/base/songs"), file));
                    }
                }
            }
            return View();
        }

私がやろうとしているのは、映画の画像とともに20の映画名を渡すことです。各映画には、その下に表示される約4〜5曲が含まれています。上記のすべての情報をキャプチャする方法を理解しましたが、ディスプレイに表示する方法がわかりません。誰か助けてくれませんか?

4

3 に答える 3

1

あなたは私が推測するあなたのアプリケーションにいくつかのクラスを追加する必要があります。たとえば、MovieとMovieSongとあなたのMovieクラスはIListImagesのようなものでなければなりません。次に、ムービーをビューに簡単に渡すことができます。

このコードが機能するかどうかはわかりませんが、次のようなものを試すことができます。

public ActionResult Index()
{   
    var movies = new List<Movie>();

    var songsPath = Server.MapPath("~/Content/themes/base/songs");
    var folders = Directory.GetDirectories(songsPath);

    foreach (var folder in folders)
    {
        Movie movie = new Movie();
        movie.MovieName = new DirectoryInfo(folder).Name

        string[] files = Directory.GetFiles(folder);

        foreach (var file in files)
        {
            if (Path.GetExtension(file) == ".jpg" ||
                Path.GetExtension(file) == ".png")
            {
                movie.Images.Add(Path.Combine(songsPath, file));
            }
            else 
            {
                movie.Songs.Add(Path.Combine(songsPath, file));
            }
        }

        movies.add(movie);
    }
    return View(movies);
}
于 2012-10-11T03:00:41.573 に答える
0

モデルオブジェクトにデータを入力し、それを戻り行に渡す必要があります。

var theModel = new MyModel();
...
//All the loading model info

return View(theModel)

ビューで、次のように上部に線を設定する必要があります。

@model YourProject.MyModel

次に、@Modelオブジェクト全体をループします。

于 2012-10-11T02:56:34.193 に答える
0

Q1。ディスプレイに表示する方法がわかりません

A.これにはビューモデルを使用する必要があります。以下は私がこれのために準備したビューモデルです。

public class Movie
{
    public string Name;
    public string ImagePath;
    ....
    ....
    //Add more as per your requirement
}

準備したこのモデルに、持っているすべてのデータをプッシュします。

Q2。私がやろうとしているのは、映画の画像とともに20の映画名を渡すことです。各映画には、その下に表示される約4〜5曲が含まれています。

A.これで、映画のコレクションができたので、このMovieクラスのリストをモデルに渡す必要があります。

public ActionResult Index()
{   
    var movies = new List<Movie>();

    // populate the data

    return View(movies);
}

ビューに表示する

@model ProjectName.Models.List<Movies>

@foreach(var item in Model)
{
    <h1>Movie Name : </h1> @item.Name
    ....
    .... //etc etc
}   

お役に立てれば。

于 2012-10-11T04:58:36.607 に答える