Как упоминается в названии. I Каков наилучший способ вызова метода контроллера из представления. ViewBag, HTMLHelper ...?Вызовите метод контроллера из вида надлежащим образом
ответ
Когда пользователь запрашивает страницу, веб-страница сначала находит соответствующий контроллер с использованием маршрутов. Затем он завершает весь код сервера C#. Затем он заполняет html-шаблон и отправляет html пользователю. Вы не можете вызвать контроллер из режима просмотра на сервере. Но когда просмотр страницы работает на браузере клиента, вы можете сделать AJAX вызов на сервер, а затем отправить данные на контроллер
Вот пример
http://www.codeproject.com/Articles/41828/JQuery-AJAX-with-ASP-NET-MVC
Позвольте мне сузить шаги браузером.
запросы пользователей страница
/Home/Index
- сервер ASP MVC отправляет запрос маршрутов. Маршрут по умолчанию находится в файле global.aspx.
- Маршрут вызова соответствующего контроллера/действия.
- Действие запускает код сервера и, необязательно, отправляет данные в представления.
- Шаблоны заметок заполнены и HTML/css/javascript отправляется клиенту.
- После загрузки страницы в браузере или после щелчков пользователя вы можете отправить запрос AJAX обратно на сервер
Вам просто нужно, чтобы сделать его ActionResult. Кроме того, если вы используете AJAX POST, действие должно быть отмечено атрибутом HttpPost. Попробуйте следующее:
[HttpPost]
public ActionResult test()
{
return Content("It works");
}
you view.cshtml Добавить тег javascript.
// Sample Ajax Request.
$.ajax({
url: '@Url.Action("test", "Home")',
data: {dealerID: dealerID},
type: 'POST',
success: function(data) {
alert(data);
}
});
Примечание:
- Url.Action имеет параметры контроллера/действий. сначала должно быть «ActionName», затем «ControllerName».
- Для Url.Action, если класс контроллера является «HomeController», тогда вам нужно просто «Главная»
- Параметры JQuery, когда запрос успеха показывает предупреждение. - должен быть успешным: функция (данные) {}.
@Html.ActionLink("LinkText", "ActionName", "ControllerName")