本文讲述了c# – 关于MVC 4视图中ViewData的Foreach!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
本文讲述了
c# – 关于MVC 4视图中ViewData的Foreach!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
我遇到的问题是我从我的数据库返回一张照片记录,这在我的详细信息视图中工作正常.但是在控制器下的细节我也正在编译一个列表对象,我想在我的详细信息视图中显示它,因为它包含相关的其他照片.因此,在视图的底部,它应列出每个引用的照片名称.我正在使用galleria.Io照片查看器,我想将其插入其中.
当我尝试遍历列表中的每个项目时,我得到:
- {"Object reference not set to an instance of an object."}
PhotosController
- publicActionResultDetails(intID=0)
- {
- Photos photos = db.FindPhotoByID(ID);
- if(photos ==null)
- {
- returnhttpNotFound();
- }
-
- List<Photos> photoList=GetimagesFromFilmID(8);
-
- VIEwData["NumberOfImages"]= photoList.Count().ToString();
- VIEwData["PhotoList"]= photoList;
-
- returnVIEw(photos);
- }
-
- publicList<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;
- }
细节视图
- @modelTestingMVCQA.Models.Photos
- @*@modelIEnumerable<TestingMVCQA.Models.Photos>*@
- @{
- VIEwBag.Title="Details";
- }
-
- <h2>Details</h2>
-
- <fIEldset>
- <legend>Photos</legend>
-
- <divclass="display-label">
- @HTML.displaynameFor(model => model.Photoname)
- </div>
- <divclass="display-fIEld">
- @HTML.displayFor(model => model.Photoname)
- </div>
-
- <divclass="display-label">
- @HTML.displaynameFor(model => model.PhotoDescription)
- </div>
- <divclass="display-fIEld">
- @HTML.displayFor(model => model.PhotoDescription)
- </div>
-
- <divclass="display-label">
- @HTML.displaynameFor(model => model.Photofilename)
- </div>
- <divclass="display-fIEld">
- @HTML.displayFor(model => model.Photofilename)
- </div>
-
- <divclass="display-label">
- @HTML.displaynameFor(model => model.ImageMimeType)
- </div>
- <divclass="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){
- <divclass="galleria">
- <img src="@Url.Action("Getimage","Photos",new { ID = Model.PhotoID })" data-Title="My Title" data-description="My description"/>
- <img src="@Url.Action("Getimage",new { ID = 5 })"/>
- <img src="@Url.Action("Getimage",new { ID = 6 })"/>
- <img src="@Url.Action("Getimage",new { ID = 7 })"/>
- <img src="@Url.Action("Getimage",new { ID = 8 })"/>
- <img src="@Url.Action("Getimage",new { ID = 9 })"/>
- <img src="@Url.Action("Getimage",new { ID = 10 })"/>
- <img src="@Url.Action("Getimage",new { ID = 11 })"/>
- <img src="@Url.Action("Getimage",new { ID = 12 })"/>
- <img src="@Url.Action("Getimage",new { ID = 13 })"/>
- <img src="@Url.Action("Getimage",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 inVIEwData["NumberOfImages"]asIEnumerable<TestingMVCQA.Models.Photos>)
- {
- }
- </p>
-
- <p>
- @HTML.Actionlink("Edit","Edit",new{ID=Model.PhotoID})|
- @HTML.Actionlink("Back to List","Index")
- </p>
在索引视图中,我有:
- @modelIEnumerable<TestingMVCQA.Models.Photos>
这允许我使用foreach并且我理解为什么但是当我在详细信息视图中返回单个对象时,我对如何解决问题有点困惑.因此,当它全部工作时,我可以替换Getimage调用和foreach图像本身.
如果您需要任何其他代码或解释,请告诉我们.
解决方法
您在foreach循环中使用VIEwData [“NumberOfImages”]这是错误的.
你的foreach循环应如下所示: –
- @foreach(var item inVIEwData["PhotoList"]asIEnumerable<TestingMVCQA.Models.Photos>)
- {
- //@item.filename //instead .filename use property which you have used in your model class
- }
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

-
发表于 2022-07-27 10:01
- 阅读 ( 680 )
- 分类:C/C++开发