0

ルート ディレクトリからすべてのファイルを表示する Web サイトを構築したいので、ASP.NET Web アプリケーション プロジェクトを開きます。

このフォルダー内にはいくつかのフォルダーがあり、各フォルダー名をクリックすると (フォルダーごとにボタンがあります)、このフォルダー内のすべてのファイルを含む新しいページに移動します。そこで、folder1 という新しいコントローラーを追加しました。

public class WebMailController : Controller
{
    private List<string> list = new List<string>();

    //
    // GET: /folder1/

    public FileInfo Index()
    {
        FileInfo[] array = GetFiles();
        foreach (FileInfo file in array)
            return file;
        return null;
    }

    private FileInfo[] GetFiles()
    {
        DirectoryInfo di = new DirectoryInfo(@"D:\folder");
        FileInfo[] fileInfo = di.GetFiles("*.doc");
        return fileInfo;
    }

}

私の問題:

  1. 現在、フォルダーの最初のファイルしか表示できません
  2. 新しいページを開くことはできますが、メイン ページのテンプレートは表示されますか?
4

2 に答える 2

0

最初にのみ返すため、最初のファイルが表示されます。

FileInfo[] array = GetFiles();
foreach (FileInfo file in array) return file;

したがって、最初のアイテムを取得して、すぐに に返しますView。代わりに、ファイルのリストを返す必要があります。

2 番目の項目について話します - use PartialView。そのような場合、コントローラPartialViewはアイテムのリストの代わりに返す必要があります:

public ActionResult Files()
{
    return PartialView("_Files", GetFiles());
}

ビューは次のようになります。

@Ajax.ActionLink("LoadFiles", "Files", "Home", new AjaxOptions { 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "files-div"
})

<div id="files-div">
    @Html.Partial("_Files")
</div>

の良いPartialView

于 2013-11-08T09:15:43.483 に答える
0

最初のフォルダーのみを表示する場合-戻り値の型はであり、ループFileInfoの最初の反復を返します。を返し、ループで使用しforeachたい(そして を投げる) - しかし、 の結果を返すことができるのに、なぜわざわざするのですか?IEnumerable<FileInfo>yield return file;foreachreturn nullGetFiles()

public IEnumerable<FileInfo> Index()
{
    FileInfo[] array = GetFiles();
    foreach (FileInfo file in array)
        yield return file;
}

2 番目の質問で何を探しているかについての私の最善の推測は、返されたFileInfo結果を別のページに渡したいということです。結果をセッションに保存するかTempData、呼び出して、結果RedirectToActionを消費する別のアクションにユーザーをリダイレクトできます。FileInfo

public ActionResult Index()
{
    TempData[ "files" ] = GetFiles();

    RedirectToAction( "Files" );
}

public ActionResult Files()
{
    var fileInfos = TempData[ "files" ];

    // do stuff with fileInfos
}
于 2013-11-08T09:20:40.387 に答える