2012-09-04 84 views
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)" [email protected]/>  
} 

现在对图片的点击我想打开另一个视图并访问与该特定项目相关的@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; } 
} 

所以当我点击的图片,我应该能够访问MovieURI具体到特定的图像。我们可以使用querystring来做到这一点,但剃刀必须有更好的东西。

回答

2

为什么你有两次对图像alt?试试这个:

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

在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" [email protected]/> 
    </a> 
} 

操作:

public ActionResult Movie(int id) 
{ 
    var movieModel = context.Movies.GetById(id); 
    return View(movieModel); 
} 
0

您可以使用TempData在不同视图之间传递数据。 看看this link

1

通过传递有什么问题?

我会通过MovieURIMovieDetails ID通过QueryString,然后将其传递到您要显示的视图。

Razr是一个视图引擎。它不会改变您在视图之间传递数据的方式。我会避免使用其他人所建议的TempData,除非我绝对不能以其他方式做到这一点。