MVC - вызов контроллера из поля зрения

Я новичок в MVC

Я занимаюсь разработкой веб-приложения с использованием MVC, и приложение содержит только одну страницу.

Таким образом, с этой точки зрения я должен заполнить несколько данных. Скажем, если приложение является приложением "Лента новостей", мне нужно заполнить последние новости, новости, которые вам нравятся, новости, рекомендованные вашими друзьями и т. Д. Поэтому я должен сделать ajax-вызов от просмотра ко всем необходимым контроллерам, чтобы получить эти данные и добавить в представлении??

В настоящее время я могу получить данные, выполнив ajax-вызов контроллера и извлекая данные, но, насколько я понимаю, контроллер вызывается первым в MVC, и он отображает представление, и, как я сейчас использую, я вызываю контроллер вернулся из поля зрения.

Это правильный метод? Какой правильный подход для достижения этого результата в MVC?

Если мне нужно использовать Ajax для вызова контроллера и получения данных, что будет отличаться в MVC? В трехуровневом приложении я сделаю ajax-вызов некоторого веб-метода или обработчика, который вернет некоторые данные. Я вызываю функцию результата действия, которая снова возвращает некоторые данные.

2 ответа

Решение

Да, вы можете использовать вызов ajax, как это

$(document).ready(function () {
            $('#CategoryId').change(function () {
                $.getJSON('/Publication/AjaxAction/' + this.value, {},
                  function (html) {
                      $("#partial").html(html);

                      alert("go");
                  });
            });
        });

а затем загрузить частичный вид из вашего контроллера.

public ActionResult AjaxAction(int Id)
        {
            if (Request.IsAjaxRequest())
            {
                if (Id== 1)
                {
                    ViewBag.SourceTypeId = new SelectList(db.SourceTypes, "Id", "Title");
                    ViewBag.CityId = new SelectList(db.Cities, "Id", "Title");
                    return PartialView("_CreateStatya");
                }
            }
            return PartialView();
        }

Вы можете использовать ChildActionOnly:

[ChildActionOnly]
public ActionResult GetLatestNews()
{
  //...
  return PartialView("yourView",yourquery);
}

и назовите это, по вашему мнению, так:

 @Html.Action("GetLatestNews","Home")
Другие вопросы по тегам