/ / MVC Wyświetlanie plików z folderu w widoku - c #, asp.net-mvc, widok, .net

MVC wyświetla pliki z folderu w widoku - c #, asp.net-mvc, view, .net

To, co chcę zrobić, to wyświetlić zawartość folderu, który znajduje się na moim serwerze w widoku w mojej aplikacji MVC.

Mam to, co moim zdaniem powinno być na miejscuAction, jednak „nie jestem pewien, jak przejść do wdrożenia odpowiedniego poglądu i zastanawiałem się, czy ktoś może wskazać właściwy kierunek w tym kierunku. (A także, jeśli ktoś uważa, że ​​moje działanie można poprawić, rada byłaby mile widziana: ))

Oto akcja:

public ActionResult Index()
{
DirectoryInfo salesFTPDirectory = null;
FileInfo[] files = null;

try
{
string salesFTPPath = "E:/ftproot/sales";
salesFTPDirectory = new DirectoryInfo(salesFTPPath);
files = salesFTPDirectory.GetFiles();
}
catch (DirectoryNotFoundException exp)
{
throw new FTPSalesFileProcessingException("Could not open the ftp directory", exp);
}
catch (IOException exp)
{
throw new FTPSalesFileProcessingException("Failed to access directory", exp);
}

files = files.OrderBy(f => f.Name).ToArray();

var salesFiles = files.Where(f => f.Extension == ".xls" || f.Extension == ".xml");

return View(salesFiles);
}

Każda pomoc będzie doceniona, dzięki :)

Odpowiedzi:

5 dla odpowiedzi № 1

Jeśli chcesz tylko nazwy plików, możesz zmienić zapytanie Linq na

files = files.Where(f => f.Extension == ".xls" || f.Extension == ".xml")
.OrderBy(f => f.Name)
.Select(f => f.Name)
.ToArray();
return View(files);

Następnie (zakładając domyślny szablon projektu) dodaj następujące elementy do widoku Index.cshtml

<ul>
@foreach (var name in Model) {
<li>@name</li>
}
</ul>

Który wyświetli listę nazw plików


5 dla odpowiedzi nr 2
  1. IMHO powinieneś wystawiać tylko to, czego naprawdę potrzebuje widok. Pomyśl o tym: czy naprawdę musisz odzyskać całość FileInfo obiekt, czy tylko ścieżka do pliku? Jeśli to ostatnie jest prawdziwe, po prostu zwróć a IEnumerable<string> do widoku (zamiast IEnumerable<FileInfo>, co robisz w powyższym kodzie). Wskazówka: po prostu dodaj Select zadzwoń do swojego wyrażenia Linq ...
  2. Wtedy twój widok po prostu renderuje ten model - potrzebna jest pętla foreach i trochę kodu HTML, aby to zrobić.

3 dla odpowiedzi nr 3

To jest uproszczony przykład widoku brzytwy. Wypisze nazwy plików w tabeli HTML.

  @model IEnumerable<FileInfo>

<h1>Files</h1>
<table>

@foreach (var item in Model) {
<tr>
<td>
@item.Name
</td>
</tr>
}

</table>