2017-01-29 3 views
0

KHello, Я использую ядро ​​Asp.net для загрузки файлов в мою базу данных. Где у меня две базы данных, одна для создания и для файлов. Моего код выглядит следующим образом.Net Core Удалить загруженные файлы

public async Task<IActionResult> Create([Bind("ID,Name,Email,Job Title,ICollection<IFormFile> uploads, Track track) 
     { 
      if (ModelState.IsValid) 
      { 
       _context.Add(track); 

       // Uploading files for the Request Database 
       foreach (var upload in uploads) 
       { 
        if (upload.Length > 0) 
        { 
         // Getting file into buffer. 
         byte[] buffer = null; 
         using (var stream = upload.OpenReadStream()) 
         { 
          buffer = new byte[stream.Length]; 
          stream.Read(buffer, 0, (int)stream.Length); 
         } 
         // Converting buffer into base64 code. 
         string base64FileRepresentation = Convert.ToBase64String(buffer); 
         // Saving it into database. 
         _context.Upload.Add(new Request() 
         { 
          UploadName = string.Format("{0}_{1}", DateTime.UtcNow.ToString("yyyyMMddHHmmss"), Request.FileName), 
          Uploadcode = base64FileRepresentation, 
          TrackID = track.ID, 
         }); 
         await _context.SaveChangesAsync(); 

        } 
       } 
       await _context.SaveChangesAsync(); 
       return RedirectToAction("Index"); 
      } 
      return View(track); 
     } 

Что я отслеживание сделать это в странице редактирования Я хочу иметь кнопку, чтобы удалить файл, который был загружен в трек .. Я попытался изменить удаление действие от контроллера к следующему коду, но он не работает

[HttpPost, ActionName("DeleteRequest")] 
    [ValidateAntiForgeryToken] 
    public async Task<IActionResult> DeleteRequest(int id) 
    { 
     var x= await _context.Upload.SingleOrDefaultAsync(m => m.UploadID == id); 
     _context.Upload.Remove(x); 
     await _context.SaveChangesAsync(); 
     return RedirectToAction("Index"); 
    } 

Мой взгляд код

<a asp-action="DeleteRequest"><span class="glyphicon glyphicon-trash" style="color:red;"></span></a> 

, когда я нажимаю его, оно принимает S мне пустую страницу с этим URL: локального хоста: 44444/Tracks/DeleteRequest

+1

что это ошибка, которую вы получаете? –

+0

Я не получаю сообщение об ошибке. Он просто ничего не делает. –

+0

вы можете проверить на профилировщике/БД SQL, что эта запись удалена или нет или некоторая ошибка в запросе –

ответ

0
<a asp-action="DeleteRequest" asp-controller="UpdatYourControllerName" 
    asp-route-id="@model.UploadId"><span class="glyphicon glyphicon-trash" style="color:red;"></span></a> 





    public async Task<IActionResult> DeleteRequest(int id) 
{ 
    // here debug the id you passed is actually present in db 
    var x= await _context.Upload.FirstOrDefaultAsync(m => m.UploadID == id); 
    if(x!=null) 
    { 
    _context.Upload.Remove(x); 
    await _context.SaveChangesAsync(); 
    return RedirectToAction("Index"); 
    } 
} 
Смежные вопросы