加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – “Inject”Request.Url.Hosts – ASP.net MVC

发布时间:2020-12-16 06:51:44 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.net MVC应用程序中,我需要获取应用程序的主机,因为我必须区分多个域/实例. 考虑到良好的设计和可测试性,我不希望这样: public ViewResult Show(int id){ string host = Request.Url.Host; ....} 是否有可能通过构造函数“注入”它. 对于这个问题,
在我的ASP.net MVC应用程序中,我需要获取应用程序的主机,因为我必须区分多个域/实例.

考虑到良好的设计和可测试性,我不希望这样:

public ViewResult Show(int id)
{
   string host = Request.Url.Host;
   ....
}

是否有可能通过构造函数“注入”它.

对于这个问题,最干净的解决方案是什么?

解决方法

您还可以为控制器使用一些构造函数,如下所示:

public MyController() : this(DefaultHostGetter) { }
public MyController(Func<string> hostGetter)
{
    this.hostGetter = hostGetter;
}

private string DefaultHostGetter() { return this.Request.Url.Host; }

视图操作将是:

public ViewResult Show(int id)
{
   string host = this.hostGetter();
   ....
}

然后,您可以通过提供不同的主机getter(模拟)来测试您的控制器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读