DropDownList包含MVC4 Web应用程序中“编辑”和“创建”视图中目录中的文件列表

时间:2013-01-28 09:56:41

标签: web-applications asp.net-mvc-4 views

我想在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读取列表中的内容单个地方,但一次只有一件事......)

如何使用此目录列表作为创建视图中的下拉列表的任何想法? 我尝试了很多变化,但似乎没有任何效果。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

您是否考虑过只将属性添加到绑定到创建视图的模型中,而不是使用ViewBag,如​​下所示:

public List<FileInfo> FileList 
    {
        get
        {
            DirectoryInfo directory = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/DownloadFiles"));
            return directory.GetFiles().ToList<FileInfo>();
        }
    }