2016-09-13 5 views
0

Я не очень разбираюсь в этой структуре, поэтому мне нужна помощь здесь. В представлении я хочу добавить ссылку или кнопку при нажатии на которую определенный файл удаляется с сервера. Я добавил этот метод к контроллеру:Удаление файла с сервера при нажатии кнопки в ASP.NET MVC

[Authorize] 
    public ActionResult DeleteFile(string path) 
    { 
     if ((System.IO.File.Exists(path))) 
     { 
      try 
      { 
       System.IO.File.Delete(path); 
      }catch(Exception ex) 
      { 
       Debug.WriteLine("Deletion of file failed: " + ex.Message); 
      } 
     } 
     return View(); 
    } 

Показался прост, хотя я не уверен в return View();. Теперь в представлении мне нужна форма, потому что путь к файлу, который нужно удалить, должен быть отправлен в контроллер, это правильно? Это то, что я до сих пор, передразнил от другого кода в проекте:

@Html.BeginForm("DeleteFile", "Home", FormMethod.Post, new { id = "delete-attachment-form" }) 
    { 

     @Html.Hidden("path", path) 
    } 

path является переменной JavaScript, содержащий путь к серверу в файл, который должен быть удален. Если я нахожусь на правильном пути здесь, как добавить кнопку или ссылку, чтобы щелкнуть по ней, она отправит форму?

+0

Следует просто добавить кнопку отправки: ' ' – KSib

+1

Добавьте кнопку отправки в свою форму и обязательно отметьте свое действие с помощью' [HttpPost] '. – Jasen

+1

Как вы используете javascript-переменную 'path' точно? Сервер будет отображать ваш HTML из '@ Html.Hidden' до выполнения javascript. –

ответ

1

Если только иметь возможность добавить кнопки отправки:

<input type="submit" name="submit" />

1

Вы должны иметь форму и кнопку, как этот

@Html.BeginForm("Controller", "DeleteFile", new {Path= filePath},FormMethod.Post) { //Button }

или с использованием Ajax и Jquery

значения вар = $ (это) .serialize();

$.ajax({ 
     type: 'POST', 
     url: "url?path="+path.tostring(), 
     data: values , 
     success: function(response) { //update view } 
}); 
1

Внутри формы вы можете добавить кнопку, а затем отредактировать кнопку click в JavaScript.

@Html.BeginForm("DeleteFile", "Home", FormMethod.Post, new { id = "delete-attachment-form" }) 
{ 
    @Html.Hidden("path", path) 
    <button id="delete-btn" type="button" class="btn btn-danger"> 
     Delete 
    </button> 
} 

Тогда <script type="text/javascript"> блок:

$(function() { 
    $('#delete-btn').click(function() { 
     var query = $('#delete-attachment-form'); 
     var form = query[0]; 
     var toPost = query.serialize(); 
     $.ajax({ 
      url: form.action, 
      type: form.method, 
      data: toPost, 
      success: function (result) { 
       // display result 
      }, 
      error: function() { 
       // handle error 
      } 
     })    
    }); 
}); 

Кроме того, this is хороший учебник по удалению в ASP.NET MVC

+0

Спасибо. Но есть ли причина, добавляющая этот кусок jQuery-кода вместо строки '', как это предлагается в комментариях? Кажется намного проще – speedymcs

+0

Предоставляет вам доступ к функциям AJAX для успеха/ошибок, чтобы вы могли динамически настраивать пользовательский интерфейс. – PiotrWolkowski