#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 или путем повторного отображения частичного представления. Если я не неправильно понял, чего вы пытаетесь достичь!