MVC5 您不能调用控制器“xx”上的操作方法“xx”,因为该方法是一种泛型方法

在 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 控制器继承工作原理。

时间: 2024-12-19 07:43:16

MVC5 您不能调用控制器“xx”上的操作方法“xx”,因为该方法是一种泛型方法的相关文章

View视图调用控制器方法

1.@using XXX.Controllers;//引用控制器 2. var otherController = DependencyResolver.Current.GetService<UserCenterController>();//要引用的控制器(UserCenterController) 3.otherController.CommentState(Model.OrderId)//调用控制器里的CommentState()方法

jquery源码;是怎么实现直接调用$()函数原型上的方法的?

1:当我们调用jQuery()方法时:就会先加载初始化函数jQuery.prototype.init()方法;这样一来使用jQuery()函数就会得到初始化函数init()的返回值:执行初始化函数后就能直接调用jQuery()原型上的方法:而init()属于构造器函数:jQuery.prototype.init.prototype=jQuery.prototype;这句话让初始化函数init()这个对象去继承jQuery原型上的对象属性;然后就能直接调用jQuery原型上的方法::这是jquer

上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)

一.使用苹果原生的方法 1.下拉刷新 2.上拉刷新 (1 首先要新建一个footer得XIB文件,当然同时包括对应的控制器文件,例如在XIB文件中可以如下拖拉对应的控件 (2 然后在代码文件中写一个实例方法 +(instancetype)footer { return  [[[NSBundle mainBundle] loadNibNamed:@"XIB文件名" owner:nil options:nil] lastObject]; } (3 然后在我们的列表控制器中调用: /** *

转换QTP对象库xx.tsr文件为xx.xml文件以便git跟踪

众所周知,Git仅能跟踪文本文件,而QTP所生成的对象库文件xx.tsr是一种二进制文件,不可以被git所跟踪.本文详细介绍了利用git的hooks特性,来将xx.tsr文件转换成xx.xml文件,以便跟踪对象库的版本历史. 首先,git的hooks特性是指在特定事件发生之前或者之后执行特定脚本代码的功能(从概念上类比,与监听事件.触发器等类似).特定事件既是指git执行的特定事件,如commit,push,recieve等,以下是常见的git事件: applypatch-msg pre-app

CentOS x64上Matlab R2015b的镜像安装方法与卸载

CentOS x64上Matlab R2015b的镜像安装方法与卸载 0. 原料 (1). CentOS_x64系统 CentOS 2.6.32-573.el6.x86_64 (2). Matlab  R2015b_glnxa64.iso,可以从百度网盘下载到:链接: http://pan.baidu.com/s/1dD9F8RJ 密码: t8zi 1. CentOS/Linux 安装MATLAB (0). Matlab的安装说明readme.txt,全文摘抄如下(可略过). I offer t

Windows server 2012 域控制器之间角色转移及清理域控方法,实现辅助域控提升为主域控

本章博文讲述Windows server 2012 域控制器之间角色转移及删除域控方法 .针对不同的应用场景,对操作方法进行了归纳与总结   . 下面分2种场景做介绍  : 场景1:主域控制器与辅助域控制器运行正常,相互间可以实现AD复制功能.需要把辅助域控制器提升为主域控制器 ,把主域控制器降级为普通成员服务器:这种场景一般应用到原主域控制器进行系统升级(先转移域角色,再降级,再安装或升级高版本系统,再次转移角色恢复到主域控制器角色)或使用配置更高的服务器替代原主域控制器起到主域控制的作用(使

Virtual PC 2007上 MS-DOS 6.22的安装方法

标题: MSDN上MS-DOS 6.22的安装方法作者: Demon链接: http://demon.tw/operating-system/msdn-ms-dos-6-22-setup.html MS-DOS 6.22是最后一个零售版的MS-DOS系统,MSDN为订阅用户提供了MS-DOS 6.22系统下载. 网上也有不少人分享这个版本的下载地址,但是却没有人告诉你要如何安装.除了怀旧,这个年代谁还会去安装DOS系统呢?那些连DOS和CMD都分不清楚,口口声声说DOS命令DOS命令的人,真的用

ASP.Net 上传进度条的实现方法

对于加载时间比较长的ASP.NET页面,我们可以在客户端浏览器中显示进度条来显示页面正在装载.下面就是具体的实现过程: 新建项目,名字为WebPortal,在项目类型中选择Visual C#项目或者Visual Basic项目都可: 在模板类型中选择ASP.NET Web应用程序: 位置里输入:http://localhost/WebPortal: 添加新项:名字为ShowProgress的Web窗体. 在您的Web窗体ShowProgress.aspx上添加任何其他的Web服务器控件. 在Sh

kali 设置 合上笔记本盖子 不自动休眠方法

kali 设置 合上笔记本盖子 不自动休眠方法 1.首先需要安装gnome工具,gonome-tweak-tool 2.找到安装位置,然后运行它,./usr/bin/gnome-tweak-tool 3.在advanced settings 修改 laptop lid close action on battery /when on AC 改为 nothing 大功告成---