我想在MVC4 Web应用程序的Edit和Create视图中显示包含目录中文件列表的下拉框。我在控制器的编辑部分使用过它:
DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/DownloadFiles"));
var filesListing = directory.GetFiles().ToList<FileInfo>();
ViewBag.zipListing = filesListing;
并在编辑视图中显示:
@Html.DropDownListFor(model => model.DownloadName, new SelectList (ViewBag.zipListing).AsEnumerable())
哪个工作正常,( DownloadName 是表字段的名称),它更新字段并在编辑页面加载时显示正确的数据库表项。 然而如果我尝试在“创建”视图中使用此错误输出抱怨Null或无法找到参考。
我有一个块的副本:
DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/DownloadFiles"));
var filesListing = directory.GetFiles().ToList<FileInfo>();
ViewBag.zipListing = filesListing;
在控制器的“创建”部分中,使用var filesListing 和ViewBag。 zipListing 重命名以避免混淆(我想我应该将dir读取列表中的内容单个地方,但一次只有一件事......)
如何使用此目录列表作为创建视图中的下拉列表的任何想法? 我尝试了很多变化,但似乎没有任何效果。谢谢你的时间。
答案 0 :(得分:1)
您是否考虑过只将属性添加到绑定到创建视图的模型中,而不是使用ViewBag,如下所示:
public List<FileInfo> FileList
{
get
{
DirectoryInfo directory = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/DownloadFiles"));
return directory.GetFiles().ToList<FileInfo>();
}
}