我有我的控制器传递数据来查看如下:
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/>
}
现在点击Image我想打开另一个视图并访问与该特定项目相关的@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必须有更好的东西。
答案 0 :(得分: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);
}
答案 1 :(得分:1)
通过QueryString
有什么问题?
我要通过MovieURI
传递MovieDetails
或QueryString
ID,然后将其传递到您要显示的视图中。
Razr是一个View引擎。它不会更改您在视图之间传递数据的方式。我会避免使用像其他人建议的TempData
,除非我绝对不能以其他方式做到这一点。
答案 2 :(得分:0)
您可以使用TempData
在不同的视图之间传递数据。
看看this link