2

以下のようにビューにデータを渡すコントローラーがあります。

IEnumerable<MovieDetails> jsonData = default(IEnumerable<MovieDetails>);

#region Constructor Request to get all Data
public MoviesController()
{
    jsonData = GetJsonValues(URL);
}
public ActionResult Index()
{
    return View(jsonData);
}

今、私のビューはコントロールを次のようにレンダリングしています:

@model IEnumerable<VikiMVC.Models.MovieDetails>

@foreach (var movieDetails in Model)
{
    <!--Deleted Divs for Simplicity -->
    <img src = @movieDetails.Thumbnail alt = @movieDetails.Thumbnail 
          class="imgStyle"onclick="playMovie(this)" alt=@movieDetails.MovieURI/>     
}

画像をクリックすると、別のビューが開き、その特定のアイテムに関連する @movieDetails にアクセスしたいと思います。

私の映画の詳細クラスは次のようになります:

public class MovieDetails
{
   public string Title { get; set; }
   public string Thumbnail { get; set; }
   // public string URI { get; set; }
   public string Description { get; set; }
   public string MovieURI { get; set; }
   // public List<Response> Response { get; set; }
}

SO 画像をクリックすると、その特定の画像に固有の MovieURI にアクセスできるはずです。querystring を使用してそれを行うことができますが、Razor の方が優れているはずです。

4

3 に答える 3

2

画像の代替を 2 回行うのはなぜですか? これを試して:

@foreach (var movieDetails in Model)
{
    <!--Deleted Divs for Simplicity -->
    <img src = @movieDetails.Thumbnail class="imgStyle" onclick="playMovie('@movieDetails.MovieURI')" alt=@movieDetails.MovieURI/>     
}

js の場合:

function playMovie(uri){
    window.location.href = uri;
}

しかし、私は次のようなことを提案します (モデルに Id フィールドを追加します):

@foreach (var movieDetails in Model)
{
    <!--Deleted Divs for Simplicity -->
    <a href="/Mycontroller/Movie/@movieDetails.Id">
        <img src = @movieDetails.Thumbnail class="imgStyle" alt=@movieDetails.MovieURI/>   
    </a>  
}

アクション:

public ActionResult Movie(int id)
{
    var movieModel = context.Movies.GetById(id);
    return View(movieModel);
}
于 2012-09-04T06:32:00.177 に答える
1

を経由して何が問題になっていQueryStringますか?

MovieURIまたはMovieDetailsID を渡し、QueryStringそれを表示したいビューに渡します。

Razr はビュー エンジンです。ビュー間でデータを渡す方法は変わりません。TempData他の方法で絶対にできない場合を除き、他の人が提案したような使用は避けます。

于 2012-09-04T06:35:21.360 に答える
0

TempData異なるビュー間でデータを渡すために使用できます。このリンクを見てください

于 2012-09-04T06:31:06.907 に答える