Foreach sur ViewData MVC 4 Vue
Le problème que j'ai c'est que je suis de retour d'une seule photo, enregistrement à partir de ma base de données, qui fonctionne très bien dans les détails de mon point de vue. Toutefois, dans le contrôleur en vertu de détails, je suis également à la compilation d'une liste d'objet, de laquelle je veux afficher dans mon affichage des détails car il contient des photos supplémentaires qui lui sont associés. Donc, au bas de la vue, il devrait liste de chaque référencé nom de la photo. Je suis à l'aide de la Galleria.Io visionneuse de photos et je veux le brancher.
Quand je l'ai essayer et en boucle sur chaque élément dans la liste, je suis arriver:
{"Object reference not set to an instance of an object."}
Code
PhotosController
public ActionResult Details(int id = 0)
{
Photos photos = db.FindPhotoById(id);
if (photos == null)
{
return HttpNotFound();
}
List<Photos> photoList = GetImagesFromFilmID(8);
ViewData["NumberOfImages"] = photoList.Count().ToString();
ViewData["PhotoList"] = photoList;
return View(photos);
}
public List<Photos> GetImagesFromFilmID(int filmID = 8 )
{
List<Photos> photos;
photos = (from p in db.Photos
where p.PhotoDescription == "8"
select p).Take(filmID).ToList();
return photos;
}
Affichage Des Détails
@model TestingMVCQA.Models.Photos
@*@model IEnumerable<TestingMVCQA.Models.Photos>*@
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<fieldset>
<legend>Photos</legend>
<div class="display-label">
@Html.DisplayNameFor(model => model.PhotoName)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.PhotoName)
</div>
<div class="display-label">
@Html.DisplayNameFor(model => model.PhotoDescription)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.PhotoDescription)
</div>
<div class="display-label">
@Html.DisplayNameFor(model => model.PhotoFileName)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.PhotoFileName)
</div>
<div class="display-label">
@Html.DisplayNameFor(model => model.ImageMimeType)
</div>
<div class="display-field">
@Html.DisplayFor(model => model.ImageMimeType)
</div>
<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")"></script>
<script src="@Url.Content("~/Scripts/galleria-1.3.6.js")"></script>
<style>
.galleria{ width: 900px; height: 500px; background: #000 }
</style>
@if (Model.PhotoFile != null) {
<div class="galleria">
<img src="@Url.Action("GetImage", "Photos", new { id = Model.PhotoID })" data-title="My title" data-description="My description" />
<img src="@Url.Action("GetImage", "Photos", new { id = 5 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 6 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 7 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 8 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 9 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 10 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 11 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 12 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 13 })" />
<img src="@Url.Action("GetImage", "Photos", new { id = 14 })" />
</div>
}
<script>
Galleria.loadTheme(src = "@Url.Content("~/Scripts/galleria.classic.js")");
Galleria.run('.galleria');
</script>
</fieldset>
<p>Your favorite fruit is:</p>@ViewData["NumberOfImages"]
<p>
@foreach (var item in ViewData["NumberOfImages"] as IEnumerable<TestingMVCQA.Models.Photos>)
{
}
</p>
<p>
@Html.ActionLink("Edit", "Edit", new { id=Model.PhotoID }) |
@Html.ActionLink("Back to List", "Index")
</p>
Dans la vue index j'ai:
@model IEnumerable<TestingMVCQA.Models.Photos>
Qui me permet d'utiliser le foreach
et je comprends pourquoi, mais comme je suis de retour d'un seul objet dans la vue détails, je suis un peu coincé sur la façon de résoudre le problème. Donc, quand il est tout à travailler, je peut alors remplacer le GetImage
appel et foreach
sur l'image elle-même.
Si vous avez besoin de plus de code ou d'explication, puis laissez-moi savoir.
avez-vous essayé de l'initialisation de cet extérieur de la méthode
List<Photos> photoList
quelque chose de " Liste<Photos> photoList = new List<Photos>();la question u ont affiché est de la mauvaise utilisation ViewData["liste photos"] dans la boucle foreach...
Dans la boucle foreach que dois-je écrire pour afficher le nom de fichier à afficher.
OriginalL'auteur user2672720 | 2014-07-27
Vous devez vous connecter pour publier un commentaire.
Vous utilisez
ViewData["NumberOfImages"]
en boucle foreach qui est faux.Votre boucle foreach devrait ressembler à ceci :-
OriginalL'auteur Kartikeya Khosla