Asp.Net MVC - 所有控制器的通用数据

2024-01-10

设置:(使用 Asp.Net MVC 2 RC、实体框架、SQL Server、VS2008)

我和我的朋友正在开发一个项目,该项目将有不同的领域指向它。我们希望从请求中获取域(网站)并使用它来驱动数据。该网站数据需要成为所有控制器的一部分。

前任。 domain1.website.com 的数据将 与数据不同 domain2.website.com,这些将是 与 website2.com 的数据不同。 网站的外观与 所有这些,只是数据不同。

我设置了一个 BaseController,所有其他控制器都继承自它。但我不喜欢它。

基本控制器:

public class BaseController : Controller
{
    private Website _website;
    private readonly IWebsiteRepository _websiteRepository;

    public BaseController(IWebsiteRepository websiteRepository)
    {
        _websiteRepository = websiteRepository;
    }

    public Website CurrentWebsite { get; }
}

问题是我现在需要将 IWebsiteRepository 传递到每个控制器的基础:

public class BioController : BaseController
{
    private readonly IBiographyRepository _bioRepository;

    public BioController(IBiographyRepository bioRepository, IWebsiteRepository websiteRepository) 
        : base(websiteRepository)
    {
        _bioRepository = bioRepository;
    }
}

这是我的问题

  1. 是否有更好的方法来处理指向一个项目的多个域并过滤数据?
  2. 有没有更好的方法让每个控制器中都有 Website 对象?

UPDATE

抱歉,我忘了添加它。我已经在使用 IoC(结构图)。我的问题更多的是:

  1. 我应该用其他东西替换 BaseController 吗?动作过滤器?
  2. 有没有办法进行设置,这样我就不必将 IWebsiteRepository 传递给基类?
  3. 有没有更好的方法来处理用于数据的域?

我实际上喜欢通过构造函数注入来注入存储库的想法。这将使测试控制器变得更加容易,因为您只需传入模拟存储库即可。另一种方法是使用静态工厂类从请求中获取存储库,但使用静态类会使单元测试变得更加困难。

我要做的一项改进是为控制器提供一个默认构造函数,该构造函数使用带有空值的参数调用构造函数。在带参数的构造函数中,如果提供的参数为 null,则实例化正确的存储库。这样您就不需要实现控制器工厂来使用其参数构建控制器;默认控制器工厂可以使用无参数构造函数,并且您仍然可以获得构造函数注入的好处。

 public BaseController() : this(null) { }

 public BaseController( IWebsiteRepository websiteRepository )
 {
     this._websiteRepository = websiteRepository ?? new WebsiteRepository();
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.Net MVC - 所有控制器的通用数据 的相关文章

随机推荐

  • Laravel/Heroku,会话没有这样的文件或目录

    我正在尝试在 heroku 上运行我的应用程序 但对于某些请求 只有 POST GET 工作正常 我的 Ajax POST 请求出现以下错误 Error Request failed with status code 419 当我检查 He
  • SignalR - 如何在集线器中执行异步任务?

    我正在尝试使用 C 5 async await 功能创建 SignalR 应用程序 但每当运行代码时 它都会抛出 System InvalidOperationException 这是重现该问题的最简单的代码 public class Sa
  • Python ctypes 和可变性

    我注意到将 Python 对象传递给本机代码ctypes可以打破可变性预期 例如 如果我有一个 C 函数 如下所示 int print and mutate char str str 0 X return printf s n str 我这
  • AutoMapper - 使用相同的源和目标对象类型进行映射

    我使用 Automapper 获取两个相同类型的对象并映射已更改的任何新值 我尝试使用下面的代码 但它不断抛出错误 我什至不确定这是否可以通过 Automapper 来实现 例如 Mapper CreateMap
  • Web 开发人员应该了解 IE7 和 IE8 之间的主要区别是什么?

    我刚刚下载了 IE8 它取代了我的 IE7 但这没关系 因为 IE8 有一个 兼容性视图 旨在呈现像 IE7 一样的页面 不确定 JavaScript 我想知道互联网上是否列出了开发人员应该了解的版本之间的所有主要差异 我在谷歌上搜索了一下
  • 尝试安装 pg gem 时找不到 'libpq-fe.h 标头

    我正在使用 Ruby on Rails 3 1 预版本 我喜欢使用 PostgreSQL 但问题是安装pg宝石 它给了我以下错误 gem install pg Building native extensions This could ta
  • Visual Studio 项目为空?

    有没有办法在 Visual Studio 2008 或 2010 中拥有一个空项目 我的意思不是空的解决方案 而是解决方案中的空项目 基本上我有一个包含多个项目的解决方案 并且我想添加一个项目来跟踪一些静态文件 这些静态文件是解决方案的一部
  • 如何获取 Azure SendGrid api 密钥?

    我已按照以下说明进行操作如何使用 SendGrid 和 Azure 发送电子邮件 https learn microsoft com en us azure app service web sendgrid dotnet how to se
  • CXF 2.2.12:如何关闭客户端的架构验证

    我想关闭 JAXB 绑定消息的模式验证 我正在处理客户端 CXF 代码 WSDL 第一代 我尝试过使用
  • 2018 年用 C++ 处理 Unicode 的正确方法是什么?

    我尝试过搜索 stackoverflow 来找到这个问题的答案 但我发现的问题和答案都在10岁由于变化和可能的进展 我似乎无法就该主题达成共识 我知道除了 stl 之外还有几个库应该处理 unicode http userguide icu
  • 防止 bitbucket-pipelines.yml 更新时触发 bitbucket 管道

    我是位桶管道的新手 我已经添加到我的节点项目bitbucket pipelines yml在管道中 我有一个步骤是构建容器并将其推送到 ECR 另一个步骤是部署 现在 每次我对 bitbucket pipelines yml 进行更改时 它
  • 特别是在 Android Q Pixel 3 和 3 XL 设备上的 BufferQueueProducer 问题。模拟器工作正常

    我正在使用表面纹理视图来显示视频 这些视频显示在轮播中 轮播本质上是一个视图寻呼机 我已经尝试过释放表面上的表面视图被破坏 但没有帮助 重写 fun onSurfaceTextureDestroyed surface SurfaceText
  • 如何从java字符串中删除无效的unicode字符

    我正在使用CoreNLP 神经网络依存解析器 http nlp stanford edu software lex parser shtml Download解析一些社交媒体内容 不幸的是 该文件包含的字符 根据文件格式信息 http ww
  • 如何在 Swift 3 中使 UITableView 清晰(透明)

    我该怎么做这个UITableView在 Swift 3 中它的单元格是清晰的 我已经浏览了之前的线程 但仍然得到白色背景 正如您从我的代码中看到的 我尝试了提到的各种方法 override func viewDidLoad self com
  • ValueError:样本大于从图中选择样本的总体

    我正在尝试从图中随机选择 n 个样本 为此 我使用 random sample 函数创建一个名为 X 的列表 如下所示 X random sample range graph ecount numPosSamples 问题是 当 numPo
  • 更改powershell命令颜色

    如何更改 powershell 中的命令颜色 目前它是黄色的 当我使用嵌套在 Intellij 中的 powershell 时 我无法读取白色背景上的黄色命令 关于 LotPings 的回答 我解决了我的问题 powershell 中的以下
  • 在项目反应器中包装阻塞 I/O

    我有一个 spring webflux API 它在服务层需要从使用 JDBC 的现有存储库中读取 在阅读了有关该主题的一些内容后 我希望将阻塞数据库调用的执行与其余非阻塞异步代码分开 我定义了一个专用的jdbcScheduler Bean
  • 从 S3 存储桶中的文件夹中删除文件

    我有一个 AWS S3 存储桶test bucket with a data文件夹 数据文件夹将包含多个文件 我可以删除 S3 存储桶中的文件 但我想要的是删除其中的文件data文件夹 而不删除该文件夹 我尝试了以下方法 aws s3 rm
  • 尝试调用 ShellExecute 来运行 Mysql 和 sql 脚本

    我一直在尝试在 Delphi 应用程序中使用 ShellExecute 打开 Mysql 并运行脚本 ShellExecute Handle open PWideChar InpCommandProgram text PWideChar c
  • Asp.Net MVC - 所有控制器的通用数据

    设置 使用 Asp Net MVC 2 RC 实体框架 SQL Server VS2008 我和我的朋友正在开发一个项目 该项目将有不同的领域指向它 我们希望从请求中获取域 网站 并使用它来驱动数据 该网站数据需要成为所有控制器的一部分 前