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; }
}

因此,当我单击图像时,我应该能够访问特定于该特定图像的 MovieURI。我们可以使用 querystring 来做到这一点,但 Razor 肯定有更好的东西。

4

3 回答 3

2

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

@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

我将通过MovieURIMovieDetailsIDQueryString传递,然后将其传递到您要显示的视图中。

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

于 2012-09-04T06:35:21.360 回答
0

您可以TempData用于在不同视图之间传递数据。看看这个链接

于 2012-09-04T06:31:06.907 回答