我正在使用mvc和backbone.js處理小型網站應用程序,並且對於如何處理異步請求與常規請求有幾點想法。使用ASP.NET MVC和Backbone.js以及漸進式增強功能的豐富網頁應用程序
今天我使用了一個名爲/ pages的控制器,如果它是ajax請求,則返回一個局部視圖,如果是常規請求,則返回一個標準視圖。在another question中,有人告訴我,當我將一堆HTML發送回客戶端時,我做得不對。
那麼應該如何構建我的控制器等來處理異步和非異步請求?
在我的情況,我有以下的代碼在我的網頁控制器
public ActionResult Index() {
var id = _model.Id;
var parentId = _model.Parent != null ? _model.Parent.Id : null;
var viewModel = new IndexViewModel
{
RootModel = _session.Query<IPageModel>().SingleOrDefault(model => model.Parent == null),
CurrentModel = _model,
ParentModel = parentId != null ? _session.Load<IPageModel>(parentId) : null,
Children = _session.Query<IPageModel>()
.Where(model => model.Parent.Id == id)
.Where(model => !model.Metadata.IsDeleted)
.OrderBy(model => model.Metadata.SortOrder)
.ToList()
};
if(Request.IsAjaxRequest()) {
return PartialView(viewModel);
}
return View(viewModel);
}
但是,如果我理解正確的事情,我會過得更好發回的網頁的集合,而不是一個完整的視圖模式?我應該如何在我的控制器中處理這個?
使用eg創建一個單獨的控制器/ API是一個好主意。 mvc 4中的api控制器?
好吧,在我的情況下,我應該只是返回一個IPageModels的集合,還是可以發回完整的視圖模型?我猜想發回收藏是要走的路? – Marcus 2012-02-21 11:27:13
它取決於你的視圖模板是否是來自viewmodel的這些數據是的yes否則我將與集合 – 2012-02-21 16:54:54