Що я хотів би зробити, це відображення вмісту папки, яка знаходиться на моєму сервері в View в моєму додатку MVC.
Я маю те, що, на мою думку, має бути на місціДія, однак, я не знаю, як слід реалізувати відповідний погляд, і мені було цікаво, якщо хтось може вказати в правильному напрямку на це. ))
Ось дію:
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);
}
Будь-яка допомога буде вдячна, спасибі :)
Відповіді:
5 за відповідь № 1Якщо ви бажаєте лише імена файлів, ви можете змінити запит Linq на
files = files.Where(f => f.Extension == ".xls" || f.Extension == ".xml")
.OrderBy(f => f.Name)
.Select(f => f.Name)
.ToArray();
return View(files);
Потім (припускаючи шаблон проекту за замовчуванням) додайте до подання Index.cshtml наступне
<ul>
@foreach (var name in Model) {
<li>@name</li>
}
</ul>
Який буде відображати список імен файлів
5 для відповіді № 2
- ІМХО ви повинні виставляти тільки те, що дійсно потрібне погляду. Подумайте про це: вам дійсно потрібно отримати ціле
FileInfo
об'єкт або тільки шлях до файлу? Якщо остання вірна, просто поверніть aIEnumerable<string>
до перегляду (замість aIEnumerable<FileInfo>
, що ви робите в вищенаведеному коді) Підказка: просто додайте aSelect
зателефонуйте до вашого виразу Linq ... - Тоді ваш погляд просто відобразить цю модель - вам знадобиться цикл foreach і якийсь HTML-код для цього.
3 для відповіді № 3
Це спрощений приклад подання бритва. Він виведе назви ваших файлів у таблиці HTML.
@model IEnumerable<FileInfo>
<h1>Files</h1>
<table>
@foreach (var item in Model) {
<tr>
<td>
@item.Name
</td>
</tr>
}
</table>