我是MVC的新手
我正在使用MVC开发一个Web应用程序,该应用程序只包含一个页面。
所以在那个视图中我必须填充多个数据。假设应用程序是“新闻源”应用程序,我需要填充最近的新闻,您喜欢的新闻,朋友推荐的新闻等。所以我应该从视图到所有必需的控制器进行ajax调用以获取这些数据并追加在视图??
目前我可以通过对控制器进行ajax调用并获取数据来获取数据,但根据我的理解,控制器首先在MVC中调用,然后呈现视图和我当前使用的方式我从视图中调用控制器。
这种方法是否正确?在MVC中实现这一结果的正确方法是什么?
如果我必须使用Ajax调用控制器并获取数据,那么MVC会有什么不同? 在3层应用程序中,我将对某些Web方法或处理程序进行ajax调用,这将返回一些数据 在这里我调用一个动作结果函数,它再次返回一些数据
答案 0 :(得分:6)
是的,您可以像这样使用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();
}
答案 1 :(得分:3)
您可以使用ChildActionOnly:
[ChildActionOnly]
public ActionResult GetLatestNews()
{
//...
return PartialView("yourView",yourquery);
}
并以这种方式在您的视图中调用它:
@Html.Action("GetLatestNews","Home")