当foreach循环在_PartialView页面中工作时,图像不显示

时间:2016-11-17 09:07:32

标签: c# asp.net-mvc razor

我有一个类似于以下的模型类

public class UserViewModel
{
    public UserViewModel() 
    {
        UsersDet = new Dictionary<long, string>(); 
        usrdat  = new List<User>();    
    }

    public Dictionary<long , string> UsersDet { get; set; }
    public IEnumerable<User> usrdata { get; set; }
}

然后我试图在部分视图中获取这些模型值,如下面的

这个局部视图实际上是一个弹出窗口。

_UserView部分视图

@model Project.ViewModels.UserViewModel

<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-body" style="width: 530px;">
            <div id="slider_view" style="display: block;">
                <div class="flexslider">
                    <ul class="slides">
                        @foreach (var item in Model.UsersDet )
                        {         
                            <li data-thumb="~/Upload_Images/A.jpg">
                                <img src="~/Upload_Images/A.jpg" data-imagedata="image001" />
                                <p class="flex-caption">Title</p>
                            </li>
                        }
                    </ul>
                </div>
            </div>
       </div>
    </div>
</div>

在这里,我看不到Popup中的A.jpg图像,但是当我使用下面的图像时,我可以看到图像

_UserView部分视图

@model Project.ViewModels.UserViewModel

<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-body" style="width: 530px;">
            <div id="slider_view" style="display: block;">
                <div class="flexslider">
                    <ul class="slides">
                        @for (int i =0; i < 3 ; i ++)
                        {         
                            <li data-thumb="~/Upload_Images/A.jpg">
                                <img src="~/Upload_Images/A.jpg" data-imagedata="image001" />
                                <p class="flex-caption">Title</p>
                            </li>
                        }
                    </ul>
                </div>
            </div>
       </div>
    </div>
</div>

这是将值绑定到上面的弹出窗口

的控制器方法
    [HttpGet]
    public PartialViewResult MethodName(int id)
    {
        try
        {    

            IEnumerable<User> listofData = ..
            UserViewModel listofimage = new UserViewModel();


            if (listofData != null) 
            {
                listofimage.usrdata = listofData;

                foreach(var item in listofimage.usrdata)
                {
                    var path = RenderImage(item.ImageValue, "UploadImagePath");                        

                    var fileResult = path as FilePathResult;

                    if (fileResult != null)
                    {

                        string imageurl = fileResult.FileName;

                        imageurl = imageurl.Replace(@"\\", @"\");

                        listofimage.UsersDet.Add(item.CaseID, imageurl);
                    }                        
                }
            }                

            return PartialView("_UserView", listofimages);   

        }
        catch (Exception)
        {
            throw;
        }

    } 

    public ActionResult RenderImage(string imageid, string pathvalue)
    {
        try
        {
            var URL = System.Configuration.ConfigurationManager.AppSettings[pathvalue].ToString();
            var path = Path.Combine(URL, imageid + ".jpg");
            return base.File(path, "image/jpeg");
        }
        catch (Exception)
        {
            throw;
        }
    }

我的foreach方法如何将元素填充为循环

是错误的

1 个答案:

答案 0 :(得分:0)

如果使用项目填充Model.UsersDet,则&lt; li>元素将被渲染。如果它们已渲染但您没有看到图像,则打开devtools,然后在“网络”选项卡中查找为每个图像发出的请求。如果请求有错误的响应,那么你根据返回的http状态修复它。

但没有调试项目,如果你说@for正在工作,但@foreach不是那么问题应该是Model.UsersDet是空的。