Я работаю над небольшим веб-приложением, использующим mvc и backbone.js, и у меня есть пара мыслей о том, как обрабатывать асинхронный запрос против обычных запросов.
Сегодня я использую контроллер / pages, которыйвозвращает частичное представление, если это ajax-запрос, и стандартное представление, если это обычный запрос.В еще один вопрос Мне сказали, что я все делаю неправильно, когда я отправляю кучу 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, используя, например.контроллер api в mvc 4?