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 テーブル アイテムを表示します。ただし、作成ビューでこれを使用しようとすると、Null についてエラーが発生するか、参照が見つかりません。

ブロックのコピーがあります:

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

コントローラーの Create セクションで、var filesListingと ViewBag を使用します。混乱を避けるためにzipListingの名前を変更しました(ディレクトリの読み取りを1つの場所にリストする必要があると思いますが、一度に1つのことかもしれません..)

このディレクトリ リストを [作成] ビューのドロップダウンとして使用する方法について何かアイデアはありますか? 私は多くのバリエーションを試しましたが、何もうまくいかないようです。お時間をいただきありがとうございます。

4

1 に答える 1

1

ViewBag を使用するのではなく、次のように create ビューにバインドしているモデルにプロパティを追加することを考えましたか?

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 に答える