Ошибка при попытке удалить объект через Entiy

237
16 июля 2017, 09:35

Не получается удалить объект с использованием Entity. Есть проект ASP.NET MVC и таблица в БД MS SQL.

В папке моделей есть два класса:

  1. Класс контекста данных:

    namespace TransportDemo.Models
    {
        public class RoutContext : DbContext
        {
            public DbSet<Route> Routes { get; set; }
        }
    }
    
  2. Класс модели, представляющий таблицу Routes:

    public class Route
    {
        public int ID { get; set;}
        public string summary{ get; set; }
    }
    

В HomeController есть ActionResult, который возвращает эту таблицу из БД (или представление, как правильно сказать?)

RoutContext db = new RoutContext();
public ActionResult Index()
{
    IEnumerable<Route> routes = db.Routes;
    ViewBag.Route = routes;
    return View();
}

И во Views Index.cshtml таблица отображает данные :

<table border="1" align="center" cellpadding="2">
    <tr>
        <td align="center"><p>ID маршрута</p></td>
        <td align="center"><p>Описание</p></td>
        <td></td>
    </tr>
    @foreach (var b in ViewBag.Route)
    {
        <tr>
            <td align="center">@b.ID</td>
            <td align="center">@b.agency_id</td>
            <td align="center"><a href="/Home/Delete/@b.ID">Удалить</a></td>
        </tr>
    }
</table>

Мне нужно удалить по ID какую-то запись, в том же HomeController пишу такой метод:

[HttpPost]
public ActionResult Delete(int id)
{
    Route _routeDelet = db.Routes.First(c=> c.ID==id);
    db.Routes.Remove(_routeDelet);
    db.SaveChanges();
    return ViewBag();
}

Получаю ошибку Не удалось найти данный ресурс. В чем моя ошибка?

Answer 1

Вы пытаетесь вызвать метод контроллера Delete обозначенный аттрибутом [HttpPost] с помощью GET запроса, поэтому получаете ошибку 404 Не удалось найти данный ресурс.

Вам нужно заменить [HttpPost] на [HttpGet] (или просто убрать [HttpPost], по умолчанию используется [HttpGet]), что противоречит REST

Либо каким-то образом отправлять POST запрос, например, с помощью форм или Ajax

READ ALSO
Как правильно забрать cookies проставленные в тесте используя jsdom?

Как правильно забрать cookies проставленные в тесте используя jsdom?

Я использую jsdom В тесте я проставил cookiesКак правильно забрать cookies? Если сделать так window

232
Реализация заполнения полей из json-файла в ajax-запросе при нажатии по ссылке

Реализация заполнения полей из json-файла в ajax-запросе при нажатии по ссылке

Как написать ajax-запрос на заполнение полей json-данными

324
Рисовать на фото пальцем. (React Native)

Рисовать на фото пальцем. (React Native)

Всем приветДелаю приложение на React Native для Android

306