2015-07-27 8 views
0

Каков наилучший способ выполнить всплывающее подтверждение при нажатии ссылки action для выполнения удаления? В настоящее время, когда я нажимаю ссылку на удаление, она будет удалена прямо. В любом случае, чтобы удалить окно подтверждения всплывающих окон? Спасибо!MVC 4 действие ссылка всплывающее окно подтверждения для удаления?

Мой Вид:

<td> 
     @Html.ActionLink("Delete", "SURV_Question_Delete", "SURV_Question", new { Question_ID = Model[i].Question_ID }, null) 
    </td> 

Мой контроллер:

public ActionResult SURV_Question_Delete(int Question_ID) 
     { 

      var query = from r in db.SURV_Question_Ext_Model.ToList() 
         where r.Qext_Question_ID == Question_ID 
         select r; 

      foreach(var item in query) 
      { 
       db.SURV_Question_Ext_Model.Remove(item); 
       db.SaveChanges(); 
      } 

      return RedirectToAction("SURV_Main_Edit", "SURV_Main", new { id = surveyId }); 
     } 
+1

Во-первых, удаление действие не должно быть GET, он должен быть POST. Используйте javascript/jquery для обработки события '.click()' (или, вернее, '.submit()' событие формы) и отобразите подтверждение/всплывающее окно и на основе возвращаемого значения, отмените отправку –

+0

@StephenMuecke any образец кода для меня, чтобы легко получить? Благодарю. –

+0

check anser может помочь вам в том, что вы ищете –

ответ

1

Попробуйте, как это, добавить онлайн на ссылке, которую называют функцию яваскрипта для подтверждения.

@Html.ActionLink("Delete", "SURV_Question_Delete", "SURV_Question", 
new { Question_ID = Model[i].Question_ID, onclick = "return 
              DeleteConfirm()" }, null) 


function DeleteConfirm() 
    { 
     if (confirm("Are you sure want to delete record")) 
      return true; 
     else 
      return false;   
    } 

вы также можете попробовать это

@Html.ActionLink("Delete", "SURV_Question_Delete", "SURV_Question", 
    new { Question_ID = Model[i].Question_ID, onclick="return confirm('Are you sure?');"},null); 
+0

Thanks! Простой и чистый. –

+1

Простой, да. Чисто, НЕТ! Ссылка - это GET, GET не следует использовать для изменения данных, как уже указано http://stephenwalther.com/archive/2009/01/21/asp-net-mvc-tip-46-ndash-donrsquot-use-delete -links, потому – Vahx

2

Во-первых, ваше удаление действие должно быть POST, а не GET. Ваши изменения данных и не хотите, чтобы это добавляется в историю браузера или разрешить URL, который необходимо ввести в адресной строке (элемент, возможно, уже были удалены)

Изменить HTML для

@using (Html.BeginForm("SURV_Question_Delete", "SURV_Question", new { Question_ID = Model[i].Question_ID })) 
{ 
    @Html.AntiForgeryToken() 
    <input type="submit" value="delete" /> 
} 

и украсить метод атрибутами [HttpPost] и [ValidateAntiForgeryToken].

Затем добавить скрипт

$('form').submit(function() { 
    // Modify the following to use you jquery-ui-dialog, but for testing purposes 
    if (!confirm("Are you sure want to delete record") { 
    return false; // cancel the submit if the user clicked the Cancel button 
    } 
}); 
0

Вы также можете сделать следующее, который будет показывать окно подтверждения с значение, которое вы хотите удалить, который является более совершенным в случае стиранию.

 
    
@Html.ActionLink("Delete Subject", "DeleteSubject", "Subjects", new { SubjectId = _item.SubjectMsId }, 
          new { onClick = "return confirm('Are you sure, you want to Delete the Subject : "+ 
           @_item.SubjectName+" ?')" })