отдельный контроллер для результатов действия ajax в asp.net mvc 3 - PullRequest
3 голосов
/ 13 июня 2011

Для ajax-вызовов actionresult Я имею в виду два варианта

  1. Поместить actionresults в контроллер, наиболее подходящий для их функций
  2. Создать отдельный контроллер для ajax-вызовов

Во втором подходе я могу использовать отдельные файлы для функционального разделения контроллера и использовать частичный класс ajaxcontroller в каждом файле.Второй вариант может быть полезен, если есть некоторые атрибуты actionfilter, которые я хочу применить к actionresults, отличным от ajax actionresults, например, атрибут Authorize может быть применен к обычному результату действия.Я могу использовать атрибут Ajaxonly в результатах действия ajax, чтобы защитить их
, какой вариант вы бы предпочли

1 Ответ

5 голосов
/ 13 июня 2011

Почему вы хотите это сделать?Для меня контроллер привязан к определенной модели, а не к определенному типу формата вывода.

public ActionResult Users()
{
    var users = _repository.Find(); 
    var viewModel  = Mapper.Map(users); // automapper or similar
    return Request.IsAjax() ? Json(viewModel) : View(viewModel);
}

Чтобы ответить на ваше обновление

Лучше создатьCustomAuthorizeAttribute, который проверяет, является ли это ajax-запросом или обычным запросом, и выполняет соответствующую авторизацию.Ваши контроллеры не должны знать, как осуществляется авторизация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...