【发布时间】:2013-10-26 23:16:00
【问题描述】:
我正在使用 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);
}
但是如果我理解正确的话,我最好还是发回一组页面而不是一个完整的视图模型?我应该如何在我的控制器中处理这个问题?
使用例如创建单独的控制器/api 是个好主意吗? mvc 4 中的 api 控制器?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 web-applications backbone.js