#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»