ASP.NET MVC的Razor引擎:IoC在View激活过程中的应用
在《ASP.NET MVC的Razor引擎:RazorView》介绍BuildManagerCompiledView的时候,我们谈到默认使用的ViewPageActivator使用当前注册的DependencyResolver来完成对目标View的激活,这意味着我们可以通过注册自定义DependencyResolver的方式实现基于IoC的View激活。本篇文章中我们将演示如何通过自定义View的方式实现与IoC框架Ninject的集成。[本文已经同步到《How ASP.NET MVC Works?》中] 我们定义了一个具有如下定义的NinjectDependencyResolver,它具有一个IKernel类型的只读属性Kernel,该属性在构造函数中被初始化为一个StandardKernel对象。对于实现的GetService和GetServices方法,我们直接调用Kernel的TryGet和GetAll返回指定类型的实例和实例列表。为了方便进行类型映射,我们定义了泛型的Register<TFrom,TTo>方法。 1: public class NinjectDependencyResolver : IDependencyResolver 3: public IKernel Kernel { get; private set; } 5: { 7: } 9: { 11: } 13: { 15: } 17: { 19: }
我们采用基于URL的语言文化决定机制,即将语言文化的代码置于请求URL中来决定希望采用的语言。为此我们在自动生成的RouteConfig类型中注册了如下一个URL模板为“{culture}/{controller}/{action}”的路由对象。 static void RegisterRoutes(RouteCollection routes)
6: routes.MapRoute( 8: url : "{culture}/{controller}/{action}",
10: culture = "zh-CN",1)" id="lnum11"> 11: controller = "Home",1)" id="lnum12"> 12: action = "Index"} 14: } class MvcApplication : System.Web.HttpApplication 6: NinjectDependencyResolver dependencyResovler = new NinjectDependencyResolver();
8: DependencyResolver.SetResolver(dependencyResovler); 10:? 12: { string culture = RouteTable.Routes.GetRouteData(contextWrapper).Values["culture"] as string; 16: { 18: { 20: Thread.CurrentThread.CurrentCulture = cultureInfo; 22: } 24: } 26: } 现在运行我们的程序,并通过地址指定采用的语言文化,我们可以发现呈选出来的内容与你指定的语言文化是一致的,具体的输出效果如下图所示。 ASP.NET MVC的Razor引擎:View编译原理
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – dbo.TempGetStateItemExclusive3重复调用
- asp.net core系列 63 领域模型架构 eShopOnWeb项目分析 上
- 初识ABP vNext(6):vue+ABP实现国际化
- asp.net – Ajax Tookit TabPanel Invisible Tag Bug
- asp.net-mvc-3 – 在asp.net MVC 3中使用WIF,我在哪里定义S
- asp.net-mvc – 在哪里可以找到与asp.net MVC一起使用的优秀
- ASP.NET – 重定向301
- asp.net – Ajax Control Toolkit正在加载太多脚本资源
- asp.net-mvc – Asp.net MVC TextArea
- asp-classic – 对经典ASP的多语言支持
- 统一流控服务开源:基于.Net Core的流控服务
- asp.net – 无法加载文件或程序集“Microsoft.We
- ASP.NET MVC4模型验证
- asp.net – 可能导致XML解析错误:没有找到元素?
- asp.net-mvc – ASP.NET MVC – 从视图部分更新模
- asp.net-mvc-4 – 如何让{controller} / {id} /
- 如何追踪每一笔记录的来龙去脉:一个完整的Audit
- asp.net-mvc – 如何使Controller成为ASP.NET MV
- asp.net-web-api – 如何在Azure Service Fabric
- ASP.NET MVC 4和ExtensionlessUrlHandler