ASP.NET MVC: действие, которое вызывается только другими действиями - PullRequest
3 голосов
/ 20 января 2011

Я хочу сделать действие GET, которое запускается только в том случае, если оно вызывается другим действием, а не в том случае, если пользователь вводит URL-адрес в адресной строке. Что я могу проверить, чтобы определить, так ли это?

Ответы [ 3 ]

15 голосов
/ 20 января 2011

Вы можете украсить действие с помощью ChildActionOnlyAttribute .

  [ChildActionOnly]
  public ActionResult Menu() {
    var menu = GetMenuFromSomewhere();
      return PartialView(menu);
  }

Затем вы можете использовать HTML-помощники RenderAction () и Action () как обычно, и действие не может быть вызвано по URL.

Это новшество в MVC 2, но из тегов я предполагаю, что вы уже используете это.

Образец: http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx

12 голосов
/ 20 января 2011

Сделать модификатор доступа этого действия приватным.Поскольку это закрытый метод, он не является методом действия и не может быть вызван по URL:

private ActionResult PrivateAction()
{
    return View("SomeView");
}

Затем вызовите его из метода действия:

public ActionResult SomeAction()
{
    if(someCondition)
        return PrivateAction();
}
0 голосов
/ 28 января 2013

@ Andras Украшение действий с помощью [ChildActionOnly] предотвращает вызов действия через ajax, что необходимо в некоторых сценариях.Насчет @ajbeaven вопрос правильно, но в ситуации вызова ajax я думаю, что лучше всего украшать действие атрибутом [HttpPost].

Удачи

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