ASP.NET MVC отменить, а не удалить - PullRequest
0 голосов
/ 06 июня 2011

У меня есть два вопроса, оба относятся к одному и тому же представлению: так что есть представление под названием ProductDetails, в котором отображаются сведения о продукте.

Каждый продукт может иметь статус:

  • Доступно - в этом случае доступны две кнопки «изменить» и «удалить» (что изменит статус продукта на «Недоступно», но не удалит его из БД)

  • Недоступно - в этом случае на странице отображается продукт, но нет вариантов для редактирования или удаления. виден.

Контроллер ProductsController имеет действие Details, которое показывает это представление.

Проблема в том, что я не знаю, как реализовать две кнопки (Редактировать и Удалить), потому что:

  • Правка отправляет другому методу действия (Правка, отображающая другой вид) <- это работает </li>
  • Удалить должен (IMO) пост на текущей странице. В действии публикации статус продукта изменяется, и представление отображается снова.

Я хочу, чтобы обе кнопки выглядели как ссылки. Если я поставлю форму для удаления, то она будет отображаться в виде кнопки. Я бы хотел, чтобы кнопка не выглядела как ссылка с CSS. Или ... по крайней мере, я хочу использовать один и тот же элемент HTML для обеих «кнопок».

Ответы [ 2 ]

0 голосов
/ 06 июня 2011

Ссылка Удалить должна публиковать в действии Удалить, которое, в свою очередь (после проверки и обновления БД) должно перенаправить на действие подробностей.

public ActionResult Details(int productId)
{
  // Your current action method

  return View(model);
}

public ActionResult Remove(int productId)
{
  // Validate productId
  // Update DB

  return RedirectToAction("Details", new { productId = productId } );
}

Вы легко можете решить проблему со ссылкой на кнопку, используя GET вместо POST. Не будь ослеплен лучшими практиками.

Или вы можете использовать ссылку Удалить, которая выполняет однострочную функцию Javascript, которая отправляет форму:

<a href="javascript:document.forms['myform'].submit()">Remove</a>
0 голосов
/ 06 июня 2011

Это больше проблема отображения элементов, поэтому я добавил тег CSS к вашему вопросу, поскольку некоторые альтернативные ответы могут опираться на это.

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

Я бы сказал, что у вас есть 2 "простых" варианта.

Во-первых, выможет сделать удаление не публиковать запрос на удаление, а ссылку на страницу подтверждения удаления (или вызвать модальное окно JS с вашей формой и кнопкой удаления).

Во-вторых, вы можете сделать так, чтобы они оба выглядели как кнопки, в то время как выЯ просил, чтобы это выглядело как ссылка. Я понял, что главное - это согласованность в пользовательском интерфейсе, а не то, что ссылка выглядит конкретно.Вы можете использовать JQueryUI и вызывать .button () для обоих элементов, вызывая функцию JQueryUI for 1 немного излишне, но это быстрое изменение, конечно, вы можете повторить ту же идею стилизации ссылки, как кнопки, но вам придется потратить времярешение проблем с браузером CSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...