0

我想在 MVC4 Web 应用程序的编辑和创建视图中显示包含目录中文件列表的下拉框。我在控制器的编辑部分使用了它:

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是表字段的名称),它会更新字段并在编辑页面加载时显示正确的 db 表项。但是,如果我尝试在 Create 视图中使用它,它会错误地抱怨 Null 或找不到参考。

我有一个块的副本:

DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/DownloadFiles"));
var filesListing = directory.GetFiles().ToList<FileInfo>();
ViewBag.zipListing = filesListing;

在控制器的 Create 部分中,使用 var filesListing和 ViewBag。zipListing重命名以避免混淆(我想我应该将目录读数放在一个地方列出东西,但一次可能只有一件事..)

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

4

1 回答 1

1

除了使用 ViewBag,您是否想过只是向您绑定到创建视图的模型添加一个属性,如下所示:

public List<FileInfo> FileList 
    {
        get
        {
            DirectoryInfo directory = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/DownloadFiles"));
            return directory.GetFiles().ToList<FileInfo>();
        }
    }
于 2013-02-06T04:30:51.327 回答