如何在视图之间传递数据

3
我有一个控制器,可以像下面这样将数据传递给视图:

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可能有更好的方法。
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/>     
}

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

1

通过QueryString传递有什么问题吗?

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

Razr是一个视图引擎。它不会改变你在视图之间传递数据的方式。除非我绝对无法以其他方式完成,否则我会避免使用像其他人建议的TempData


0

你可以使用TempData在不同的视图之间传递数据。 点击这个链接查看更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接