【发布时间】:2017-10-12 11:55:45
【问题描述】:
我需要在控制器的构造函数中使用一些当前用户的数据来初始化存储库,但看起来不可能获取当前用户的数据,因为所有对象都可以提供有关用户的任何数据(例如 HttpContext 或 User ) 在构造函数的区域中可以为空。如何在构造函数中获取所需数据或以任何其他方式使用用户数据初始化存储库?
【问题讨论】:
-
为什么在 constructor 中需要它?您不需要在构造函数中初始化存储库,您可以在操作中这样做。你不需要知道用户连接到数据库,你只需要 id 将其作为参数传递给查询
-
这是针对 asp.net 5 还是针对 asp.net core?
-
@Panagiotis Kanavos 1. 问题是,Web 应用程序已经编写好了,我只是尝试改进它。例如,其中一个控制器可能有 100 多个操作,并且在每种方法中创建所有 17 个存储库是困难且不正确的。 2.但是在构造函数中连ID都不可用(如果我弄错了,告诉我在哪里)。
-
@jao asp.net core 1.1,但我记得同样的问题(用户数据不可用)也存在于经典的 asp.net mvc 中(至少在第 4 个版本中)
-
那你有一个设计问题,误解了控制器和存储库是关于什么的。构造函数在控制器被构造时被调用。它还没有成为管道的一部分。不正确的是在没有请求使用的情况下尝试获取 request 数据。具有 100 个动作的控制器不是。将 50-100 个控制器放入一个源文件中。
标签: c# asp.net-mvc asp.net-core-mvc asp.net-identity