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")