asp.net-mvc – ASP.NET MVC自定义路由约束和依赖注入
发布时间:2020-12-16 07:16:23 所属栏目:asp.Net 来源:网络整理
导读:在我的ASP.NET MVC 3应用程序中,我有一个如下定义的路由约束: public class CountryRouteConstraint : IRouteConstraint { private readonly ICountryRepositoryCountry _countryRepo; public CountryRouteConstraint(ICountryRepositoryCountry countryRep
在我的ASP.NET MVC 3应用程序中,我有一个如下定义的路由约束:
public class CountryRouteConstraint : IRouteConstraint { private readonly ICountryRepository<Country> _countryRepo; public CountryRouteConstraint(ICountryRepository<Country> countryRepo) { _countryRepo = countryRepo; } public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection) { //do the database look-up here //return the result according the value you got from DB return true; } } 我在我的应用程序上使用Ninject作为IoC容器,它实现了IDependencyResolver并且我注册了我的依赖项: private static void RegisterServices(IKernel kernel) { kernel.Bind<ICountryRepository<Country>>(). To<CountryRepository>(); } 如何以依赖注入友好的方式使用此路由约束? 编辑 我找不到一种方法来传递这种依赖于单元测试: [Fact] public void country_route_should_pass() { var mockContext = new Mock<HttpContextBase>(); mockContext.Setup(c => c.Request.AppRelativeCurrentExecutionFilePath).Returns("~/countries/italy"); var routes = new RouteCollection(); TugberkUgurlu.ReservationHub.Web.Routes.RegisterRoutes(routes); RouteData routeData = routes.GetRouteData(mockContext.Object); Assert.NotNull(routeData); Assert.Equal("Countries",routeData.Values["controller"]); Assert.Equal("Index",routeData.Values["action"]); Assert.Equal("italy",routeData.Values["country"]); } 解决方法routes.MapRoute( "Countries","countries/{country}",new { controller = "Countries",action = "Index" },new { country = new CountryRouteConstraint( DependencyResolver.Current.GetService<ICountryRepository<Country>>() ) } ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC中引用JavaScript的正确方法?
- .net – 在MVC应用程序之间共享视图,逻辑等
- 如何在ASP.NET中垂直对齐对象?
- asp.net – 在ASP中使用其他项目的用户控件
- asp.net-core – 当我们执行“kpm restore”时存储依赖项的
- Asp.net,在哪里存储登录用户的用户名?
- asp.net-mvc – 在路由路径中公开属于MVC应用程序中的区域的
- asp.net – RequiredFieldValidator在文本上放置display:i
- entity-framework – 在viewbag中传递查询结果
- asp.net-core – 如何在中间件类中访问IHostingEnvironment
推荐文章
站长推荐
- 如何在ASP.NET MVC控制器(ActionResult)中更改返
- asp.net-mvc – 从另一个区域内的动作渲染局部视
- asp.net-mvc-3 – 使用JSON.Net序列化EF4.1实体
- asp.net-mvc – Asp.net MVC型双模型绑定器
- asp.net-mvc – 属性级验证错误阻碍了类级验证的
- 在Docker上部署自动更新ssl证书的nginx + .NET C
- .net – 从Orchard内的主题渲染图像
- asp.net – 如何在razor viewengine中实现foreac
- asp.net – Web部署删除IIS网站自定义配置
- 在ASP.NET中添加动态控件,1.1和2.0之间有区别吗?
热点阅读