2015-01-30 2 views
0

Я начал с лесов, которые VS MVC 5 может создать, и он работает нормально, но я хотел иметь возможность удалять записи («Интервью» в этом случае) со страницы сведений ,MVC5 One Click Удалить из подробностей Страница

Я начал с копирования разметки с кнопки удаления на странице «Удалить» до «Детали», но просто перенаправил бы на действие «Подробности». Как я могу получить кнопку на странице сведений, чтобы запустить метод DeleteConfirmed?

Вот соответствующий код из контроллера:

public ActionResult Details(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Interview interview = db.Interviews.Find(id); 
    if (interview == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(interview); 
} 

[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public ActionResult DeleteConfirmed(int id) 
{ 
    Interview interview = db.Interviews.Find(id); 
    db.Interviews.Remove(interview); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
} 

public ActionResult Delete(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Interview interview = db.Interviews.Find(id); 
    if (interview == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(interview); 
} 

и вот разметки, который я скопировал с Удалить страницу и поместить в Подробный вид:

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    <div class="form-actions no-color"> 
     <input type="submit" value="Delete" class="btn btn-danger" /> 
    </div> 
} 

Здесь является наценкой, необходимой мне для ее работы:

@using (Html.BeginForm("Delete", "Interviews", new { id = Model.ID })) { 
    @Html.AntiForgeryToken() 
    <div class="form-actions no-color"> 
     <input type="submit" value="Delete" class="btn btn-danger" /> 
    </div> 
} 

ответ

2

Вам необходимо опубликовать сообщение DeleteConfirm. Здесь вы отправляете сообщение Details, потому что используете только Html.BeginForm(). Вам нужно:

@using (Html.BeginForm("Delete", new { id = Model.Id })) { 
+0

Хотя это делает на самом деле пост в действие Удалить (псевдоним DeleteConfirmed) не будет размещать какие-либо данные, , поэтому id будет null ... –

+0

Право. Я не обращал внимания на фактическое содержимое формы. Код работает в представлении 'Удалить', потому что это просто обратная ссылка на URL-адрес удаления, который уже содержит идентификатор. Поскольку вы указываете URL-адрес для публикации здесь явно, идентификатор должен быть включен. Кроме того, вы также можете использовать скрытый ввод с идентификатором в форме. В любом случае это сработает. –

+0

Спасибо, это сработало. Подпись для этого метода также должна включать имя контроллера, но вы получили от меня большую часть пути. Я обновляю свой пост с окончательной разметкой. – cspyr0

-1

Вы можете удалить подтвердить с помощью JavaScript на метод onclickling как этот

//change input type to button to prevent form submit 
<input **type="button"** onClick="deleteConfirm" value="Delete" class="btn btn-danger" /> 
function deleteConfirm() 
{ 
$.ajax({ 
    url: "DeleteConfirmed Action Url", 
    type:"post", 
    data:{id:} 
    success: function(response) { 
    //check your server side result 
    } 
}); 
} 
+1

почему я голосую !!!!! –

+1

deleteConfirm - это метод действия на стороне сервера, а не javascript. –

+1

вы можете вызвать действие вашего сервера с помощью вызова ajax и отправить результат клиенту –

Смежные вопросы