1. 程式人生 > >MVC5 您不能調用控制器“xx”上的操作方法“xx”,因為該方法是一種泛型方法

MVC5 您不能調用控制器“xx”上的操作方法“xx”,因為該方法是一種泛型方法

路由 例如 man log 操作 ons odin csharp ati

在 MVC5 中當使用 routes.MapMvcAttributeRoutes() 添加路由屬性是導致在控制器創建的泛型方法調用錯誤:

Cannot call action method ‘System.Collections.Generic.IEnumerable1[System.Web.Mvc.SelectListItem] GetSelectList[T](System.Collections.Generic.IEnumerable1[T], System.String, System.String, System.String, System.Object)‘ on controller ‘PublicationSystem.Controllers.BaseController‘ because the action method is a generic method.

Parameter name: methodInfo

例如:

public void AddArbet<T>(T bet, int userId)
        {
            string key = "APIFilterArbet" + userId + "";
            List<T> bets = GetArbets<T>(userId);
            if (bets != null)
            {
                if (bets.Count > 50)
                {
                    bets.Clear();
                }
                bets.Add(bet);
                _cacheManager.Set(key, bets, 60);
            }
        }

  

解決方法: 只需要把 public void AddArbet<T>(T bet, int userId) 把 public -> protected 即可 ,可以了下MVC 控制器繼承工作原理。

MVC5 您不能調用控制器“xx”上的操作方法“xx”,因為該方法是一種泛型方法