当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC应用程序控制器构造函数问题

如何解决《ASP.NETMVC应用程序控制器构造函数问题》经验,为你挑选了1个好方法。

我已经创建了一个应用程序控制器抽象类,我的控制器派生自该类(如下文所述)

以下是我的代码的示例

public abstract class ApplicationController : Controller
{
    private ProjectDataContext datacontext = new ProjectDataContext();

    protected ProjectDataContext DataContext
    {
        get { return datacontext; }
    }

    public ApplicationController()
    {
        ViewData["OpenTasks"] = DataContext.Tasks.Where(t => t.UserId == this.UserId).Count();
    }
}

这会产生以下错误,我确定是由于"Where"lamda表达式:

如果控制器没有控制器工厂,请确保它具有无参数的公共构造函数.

无论我编写LINQ查询的哪种方式都会产生此错误,编译应用程序的唯一方法是删除"Where"子句,如下所示.

ViewData["OpenTasks"] = DataContext.Tasks.Count();

任何想法是什么问题或如何解决这个问题,因为我需要对用户执行查询而不返回所有条目.

提前致谢



1> AnthonyWJone..:

试试这个而不是使用构造函数: -

public abstract class ApplicationController : Controller
{
    private ProjectDataContext datacontext = new ProjectDataContext();

    protected ProjectDataContext DataContext
    {
        get { return datacontext; }
    }

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(RequestContext);
        ViewData["OpenTasks"] = DataContext.Tasks.Where(t => t.UserId == this.UserId).Count();
    }
}

很可能当前用户ID依赖于RequestContext

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有