MapMvcAttributeRoutes игнорирует атрибут [NonAction] - PullRequest
0 голосов
/ 16 октября 2018

Любой открытый метод, который возвращает string, bool или ActionResult в классе Controller, рассматривается как действие.Если вы хотите пометить его как действие, вы можете использовать атрибут [NonAction]:

 [NonAction]
 public bool PubMethod(  out string param1)
 {

  return false;
 }

, это прекрасно работает, если вы не используете маршрутизацию сопоставления атрибутов.Приложение запускается, и метод не рассматривается как действие (его нельзя использовать как таковое, поскольку у него есть выходной параметр), все довольны.

Если вместо этого вы используете атрибут маршрутизации:

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapMvcAttributeRoutes();
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }

атрибут [NonAction] игнорируется, и приложение вылетает на линии

routes.MapMvcAttributeRoutes();

, жалуясь на то, что PubMethod действие не может быть вызвано, поскольку оно имеет параметр by ref.

Я не могу найти упоминаний об этом в документации.Любой способ пометить открытый метод как неактивное действие при использовании маршрутизации атрибута?

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