jQuery CRUD в ASP.NET MVC
-
05-07-2019 - |
Вопрос
Видя, что наша команда поддерживает интранет, который имеет клиенты пользователям, у которых гарантированно включен javascript, мы знаем, что можем вмешаться и начать использовать jQuery более "тщательно".Наша система очень большая, поэтому, несмотря на то, что мы используем области в нашем приложении ASP.NET MVC, само количество страниц для добавления, редактирования, удаления и просмотра наборов данных в каждой подсистеме области действительно довольно велико.Подсистема области может содержать примерно двадцать таблиц данных.Если имеется двадцать таблиц данных, и у вас есть отдельные страницы для добавления, редактирования, удаления и просмотра их, это означает, что всего имеется 60 страницы.Теперь представьте, что в каждой области есть двадцать подсистем, тогда в одной области будет 20 * 60 страниц, а у нас в Интрасети примерно 15 областей.Вы понимаете, в чем дело, это очень важно.
Переходя к моей реальной точке зрения, я хочу сократить это, используя возможности jQuery для размещения таблицы данных на странице, нажимая "удалить", и это выдает мне диалоговое окно удаления с кнопкой подтверждения, которое затем отправит форму, перенаправит на правильное действие и выполнит работу за меня.Теперь мне нужны некоторые рекомендации в следующих областях:
- Если бы я хотел удалить без обратной публикации вообще, используя ASP.NET MVC, каков процесс для этого?Это включает в себя нажатие кнопки удалить, ее отключение и проверку возможности удаления (отношения FK должны обрабатываться правильным образом), затем, если возможно, удаление ее и удаление строки из таблицы в представлении, и все это без обновления страницы.
- Как мне вызвать действие удаления из асинхронного процесса с помощью jQuery?Разумно ли это делать?Обычно мы используем
Html.ActionLink
.Должен ли я был бы завернуть это в форму? - То же самое касается редактирования и обновления, опять же, каков наилучший способ сделать это?
Я ищу элегантное решение и что-то, что нетрудно применить к каждой странице, для которой я должен это сделать.Мы были бы очень признательны за любой вклад.
Решение
Я работаю над проектом, который использует ссылки для запуска действий удаления через AJAX POST (без обратной передачи).
$("a.deleteLink").click(function(event)
{
event.preventDefault();
if (confirm("Are you sure you want to delete this section?"))
{
//TODO Display processing indicator
var myId = /* id of element */ ;
$.post("/Section/Delete", { id: myId }, function(data)
{
if (data == "Success")
{
//handle success
//TODO Fade out element using .fadeOut()
}
else
{
//handle error
}
});
}
});
Метод контроллера находится в /Controllers/SectionController.cs. Принимает только POST, как и любое действие, которое изменяет базу данных.
private SectionRepository secRepo = new SectionRepository();
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(long id)
{
Section sec = secRepo.GetById(id);
secRepo.Delete(sec);
secRepo.Save();
return Content("Success");
}
Другие советы
Только что закончил смотреть видео о некоторых шаблонах, которые вы можете получить для ASP.NET MVC с Subsonic.Хотя я до сих пор не реализовал это и даже не опробовал, это выглядит невероятно!Взгляните здесь.
Я не уверен, если это является целесообразным вариантом для своего или нет, но мы недавно возникла необходимость похож на ваш, и мы выпускаем наше основное приложение в качестве приложения ASP.NET в MVC (используя jqGrid), а затем дополнительное приложение ASP.NET Веб-форм для наших функций администрирования, использующее динамические данные.Это сработало чрезвычайно хорошо и сэкономило нам массу времени.
Это также выглядит как DynamicData и MVC они появятся в одном из следующих выпусков.
Другое чтение...
* Дэвид Хейден
* rbqsoft
* Острая архитектура Wiki
У Чеда Майерса есть хорошая статья об этом.
Также один от Dino Esposito.
Если вы также хотите бросить диалог jQuery на вечеринку, это Пост Рикардо Ково отлично справляется со своей задачей