Как вызвать функцию в контроллере из представления с помощью ASP.NET MVC C# Html

#c# #html #asp.net-mvc

#c# #HTML #asp.net-mvc

Вопрос:

Я пытаюсь установить простое соединение между представлением и контроллером. У меня есть кнопка в представлении

 <button value="submit" onclick="location.href='@Url.Action("submit", "Home")'" >Submit</button>
 

и здесь у меня есть функция контроллера

 public ActionResult submit()
{
    Console.WriteLine("hello test");
    return View();
}
 

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

Я все еще новичок в этом и не нашел простого способа вызвать функцию на контроллере из представления, которая не будет пытаться перейти на новую страницу. Спасибо за любую помощь.

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

1. у вас есть вызываемое представление submit.cshtml ? Можете ли вы предоставить подробную информацию об ошибке, которую вы получаете.

2. Установите точку останова для submit функции. Если достигнута точка останова, функция вызывается. Консоль. Строка записи кажется немного странной в этом контексте, и некоторые движущиеся части, которые ASP.NET Требования MVC, похоже, отсутствуют. Проверьте свой ASP.NET Документация MVC; убедитесь, что ваш метод настроен правильно с соответствующими атрибутами.

3. Я считаю, что Url.Action — неправильный подход. Я просто хочу, чтобы кнопка вызывала функцию, чтобы сделать что-то вроде изменения текста на ярлыке или что-то в этом роде.

Ответ №1:

Если вы используете

 return View();
 

в методе контроллера вы должны быть уверены, что у вас есть файл представления .cshtml.
В вашем случае, я думаю, вам нужно добавить файл submit.cshtml.

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

1. Спасибо, это работает, чтобы сделать это не ошибкой, но я был неправ. Я просто хочу что-то, что не изменит страницу, а просто изменит что-то в текущем представлении

2. В ASP.NET MVC для этого вам нужно использовать частичный просмотр. docs.microsoft.com/en-us/aspnet/core/mvc/views /…

Ответ №2:

Ваша ошибка, скорее всего, вызвана тем, что вы

О: у вас нет представления с именем submit, и поскольку вы не указываете представление в возврате контроллера, оно ищет представление, которое не может найти или

B: вы не возвращаете модель представления, которую ожидает представление, публикация исключения, которое вы получаете, облегчит помощь в этом!

вам нужно будет использовать Java script для достижения того, чего вы хотите. Невозможно вызвать функцию в контроллере, не вызывая обновления страницы, даже если вы не возвращаете представление или возвращаете то же представление, в конечном итоге выполняется полное обновление страницы.

Вам нужно изучить возможность использования асинхронного вызова Java-скрипта, такого как fetch() A.P.I. это позволит вам запускать методы в контроллере, а затем вы сможете возвращать результаты этого метода в виде json или путем повторного отображения частичного представления. Если я не неправильно понял, чего вы пытаетесь достичь!