Действие Onclick не go для метода - PullRequest
0 голосов
/ 15 марта 2020

вот код из моего файла cs html

<button type="button" class="button js-book-class" onclick="@Url.Action("BookTheClass", "MemberArea", new { ClassID = Aclass.ClassID })">Book Now</button>

и вот моя функция внутри MemberAreaController.cs

       [HttpPost]
        public ContentResult BookTheClass(int ClassID)
        {
            Class selectedClass= _context.classes.Find(ClassID);
            selectedClass.spaceUsed++;
            _context.SaveChanges();

            return Content(ClassID.ToString());//just for testing
        }

1 Ответ

0 голосов
/ 15 марта 2020

Это потому, что у вас конфликт.

Url.Action генерирует ссылку href, которая при щелчке выполнит навигацию в браузере, что означает GET запрос.

Хотя ваш сервер BookTheClass должен вызывать действие при выполнении POST.

Простое исправление, которое в этом случае также является не очень хорошим решением, состоит в изменении вашего метода на [HttpGet] (который, я считаю, используется по умолчанию), и он будет решен.

Более точным решением будет создание элемента формы и создание кнопки для отправки данных, при этом вы получите изменение только в HTML а не на стороне сервера.

Причина, по которой я думаю, что вы должны придерживаться Post, заключается в том, что я верю в идею, что GET следует рассматривать как запрос, и что запросы должны иметь одинаковый ответ. Принимая во внимание, что Post должен выполнять роль действий, которые приводят к побочным эффектам. что в Отдых означает Творение. Но как общее правило изменения состояния сервера в результате.

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