C# 访问包含FileInfo实例的ViewModel时发生NullReferenceException
我不认为我的问题是独一无二的,但我会问,因为我的问题可能有一些特殊之处。我有一个商业模式,从文件夹加载文件,并将其显示在网页上,以进行编辑和其他所需操作。我的控制器按如下方式调用此模型: 这是处理文件列表并返回fileinfo对象枚举的方法C# 访问包含FileInfo实例的ViewModel时发生NullReferenceException,c#,asp.net,asp.net-mvc,nullreferenceexception,C#,Asp.net,Asp.net Mvc,Nullreferenceexception,我不认为我的问题是独一无二的,但我会问,因为我的问题可能有一些特殊之处。我有一个商业模式,从文件夹加载文件,并将其显示在网页上,以进行编辑和其他所需操作。我的控制器按如下方式调用此模型: 这是处理文件列表并返回fileinfo对象枚举的方法 public IEnumerable<FileInfo> ListUploadedFiles(HttpContextBase htc) { //list all the files from the upload
public IEnumerable<FileInfo> ListUploadedFiles(HttpContextBase htc)
{
//list all the files from the upload directory
var path = htc.Server.MapPath("~/FileUpload");
var di = new DirectoryInfo(path);
return di.EnumerateFiles();
}
public IEnumerable ListUploadedFiles(HttpContextBase htc)
{
//列出上载目录中的所有文件
var path=htc.Server.MapPath(“~/FileUpload”);
var di=新目录信息(路径);
返回di.EnumerateFiles();
}
这是控制器操作中的代码,它应该填充viewmodel,并向viewmodel传递一个视图,这正是我遇到问题的地方
var viewmodel = new List<UploadedImageViewModel>();
var files = uploader.ListUploadedFiles(context);
foreach (var item in files)
{
viewmodel.Add(new UploadedImageViewModel()
{
ImageName = item.Name,
CreatedOn = item.CreationTime,
ImageSize = item.Length,
FileType = item.Extension
});
}
return View("ListFiles", viewmodel);
var viewmodel=newlist();
var files=uploader.ListUploadedFiles(上下文);
foreach(文件中的var项)
{
添加(新上载的图像视图模型()
{
ImageName=项目名称,
CreatedOn=item.CreationTime,
ImageSize=项目长度,
FileType=item.Extension
});
}
返回视图(“列表文件”,视图模型);
现在在我的视图中,我这样做是为了在视图上列出所需的属性:
@using SeeSite.Models
@model IEnumerable<UploadedImageViewModel>
@{
ViewBag.Title = "Upload";
}
@foreach(UploadedImageViewModel items in Model)
{
<li>@items.ImageName <span><a href="#details">Details</a></span>
<span><a href="#rename">Rename</a></span>
</li>
}
@foreach (var dir in new DirectoryInfo(Server.MapPath("~/FileUpload"))
.EnumerateFiles())
{
<li>@dir.Name <span>|</span><a href="#">Details</a>
<span>|</span> <a href="#">Rename</a></li>
}
@使用SeeSite.Models
@模型IEnumerable
@{
ViewBag.Title=“上传”;
}
@foreach(上传模型中的ImageViewModel项)
{
@items.ImageName
}
但我一直得到一个例外:
System.NullReferenceException:对象引用未设置为实例
指一个物体
并指向我的foreach开始的那条线。现在我想澄清一下,如果我使用ViewBag,它可以正常工作,尽管我只能访问一个文件的详细信息,但使用viewmodel根本不起作用。被困在这里一整天了,不想再浪费时间了。怎么了
哦,如果我在视图中这样做:
@using SeeSite.Models
@model IEnumerable<UploadedImageViewModel>
@{
ViewBag.Title = "Upload";
}
@foreach(UploadedImageViewModel items in Model)
{
<li>@items.ImageName <span><a href="#details">Details</a></span>
<span><a href="#rename">Rename</a></span>
</li>
}
@foreach (var dir in new DirectoryInfo(Server.MapPath("~/FileUpload"))
.EnumerateFiles())
{
<li>@dir.Name <span>|</span><a href="#">Details</a>
<span>|</span> <a href="#">Rename</a></li>
}
@foreach(新目录信息(Server.MapPath(“~/FileUpload”)中的var dir)
.EnumerateFiles())
{
@目录名称|
|
}
它起作用了。那么,我是在这里遗漏了什么,还是这是做我想做的事情的最佳解决方案?几乎所有
NullReferenceException
的情况都是一样的。请参见“”,以获得一些提示。您可以将视图@model
更改为List
并查看发生了什么情况吗?@saagar elias jacky感谢您的编辑…kamo-Thank将尝试并抱歉我住的internet不总是打开