Вызов простой функции с кнопки в ASP.NET Ядро (MVC)

#c# #asp.net-core-mvc

#c# #asp.net-core-mvc

Вопрос:

Я очень долго искал ответ на то, что, как я думал, было бы таким простым вопросом, но как мне вызвать функцию из контроллера страницы, используя HTML-форму / кнопку.

Конечная цель здесь — создать кнопку добавления в корзину, но я должен сначала выяснить, как создать кнопку в первую очередь.


Это самый распространенный метод, который я видел, как люди делали:

Функция в моем контроллере, которую я хочу запустить, такова: Функция

и затем в моем Index.cshtml файле у меня есть этот блок кода:

 @using (Html.BeginForm("PostTest", "Index", FormMethod.Post))
{
    <input type="submit" name="submit" value="Test" />
}
  

и кнопка отображается так, как должна,

Кнопка

но когда я нажимаю на нее…

Кнопка

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

Комментарии:

1. Вы имеете в виду, что код Debug.Write не выполняется? Вы пытались отлаживать? У вас есть представление с именем PostTest ?

2. @ChetanRanpariya правильно, вывод никогда не поступает на консоль. И нет, у меня нет представления с таким именем, только функция. Нужно ли мне представление для каждой функции?

3. Я думаю, что теперь я вижу реальную проблему .. Html.BeginForm("PostTest", "Index" должен иметь Smoothies вместо Index . И да, поскольку вы это делаете return View() , он попытается загрузить представление с тем же именем, что и действие контроллера. Поэтому вам нужно иметь представление с тем же именем, что и имя действия. Или вы можете вернуть некоторый вид tiger, указав name в View() . Пример return View("some view");

4. @ChetanRanpariya Ах да! Теперь это становится чем-то. Спасибо за помощь, теперь все стало намного понятнее. Я думаю, что я могу закончить это здесь.

Ответ №1:

Ваш URL неверен. Это должно быть

 @using (Html.BeginForm("PostTest", "Smoothies", FormMethod.Post))
{
    <input type="submit" name="submit" value="Test" />
}
  

Ответ №2:

Пожалуйста, проверьте свой URL, он кажется неправильным.

Ваш URL-адрес будет «controllerName / Methodname».

в вашем случае это будет «Smothies / PostTest»