IoC实践--ASP.NET MVC5 采用Unity依赖注入View详解
转载自:http://www.lanhusoft.com/Article/109.html
我上一篇文章是介绍的是用Unity依赖注入ASP.NET MVC5的Controller,其实不只是Controller可以依赖注入,View和Filter这些都可以用IoC框架进行依赖注入。下面我介绍一下怎么用用Unity依赖注入ASP.NET mvc5的View,注意本文是在上面一篇例子的基础上加的。
1、定义View要用到的接口IMessageService
- namespace MVC5DependencyInjection.Abstract
- {
- public interface IMessageService
- {
- string Message { get; set; }
- string ImageUrl { get; set; }
- }
- }
2、定义接口IMessageService的一个实现MessageService
- using MVC5DependencyInjection.Abstract;
- namespace MVC5DependencyInjection.Concrete
- {
- public class MessageService : IMessageService
- {
- string _Message;
- public string Message
- {
- get { return _Message; }
- set { _Message = value; }
- }
- string _ImageUrl;
- public string ImageUrl
- {
- get { return _ImageUrl; }
- set { _ImageUrl = value; }
- }
- }
- }
2、为之前用到的UserController一个新Action为Show
- using MVC5DependencyInjection.Abstract;
- namespace MVC5DependencyInjection.Concrete
- {
- public class MessageService : IMessageService
- {
- string _Message;
- public string Message
- {
- get { return _Message; }
- set { _Message = value; }
- }
- string _ImageUrl;
- public string ImageUrl
- {
- get { return _ImageUrl; }
- set { _ImageUrl = value; }
- }
- }
- }
3、定义一个BasePage让这个类继承System.Web.Mvc.WebViewPage类
- using Microsoft.Practices.Unity;
- using MVC5DependencyInjection.Abstract;
- using MVC5DependencyInjection.Models;
- namespace MVC5DependencyInjection.Concrete
- {
- public class MyBasePage : System.Web.Mvc.WebViewPage<UserInfo>
- {
- [Dependency]
- public IMessageService MessageService { get; set; }
- public override void Execute()
- {
- }
- }
- }
4、为新加的Action方法Show添加视图
- @inherits MVC5DependencyInjection.Concrete.MyBasePage
- @{
- ViewBag.Title = "Show";
- }
- <div>
- @this.MessageService.Message
- <br />
- <img alt="@this.MessageService.Message" src="@this.MessageService.ImageUrl" />
- </div>
5、注册依赖使用依赖注入生效
在原来的Application_Start代码为
- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- BundleConfig.RegisterBundles(BundleTable.Bundles);
- //注入 Ioc
- var container = this.BuildUnityContainer();
- container.RegisterInstance<IMessageService>(new MessageService
- {
- Message = "欢迎你来到wwww.lanhusoft.com",
- ImageUrl = "/Content/Images/1.jpg"
- });
- DependencyResolver.SetResolver(new UnityDependencyResolver(container));
- }
注意:这里用到的是container.RegisterInstance,直接将IMessageService绑定到具体的一个对象了。
运行结果为。

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:蓝狐软件工作室 » IoC实践--ASP.NET MVC5 采用Unity依赖注入View详解
本文标题:IoC实践--ASP.NET MVC5 采用Unity依赖注入View详解
本文地址:http://www.lanhusoft.com/Article/109.html
转载请注明:文章转载自:蓝狐软件工作室 » IoC实践--ASP.NET MVC5 采用Unity依赖注入View详解
本文标题:IoC实践--ASP.NET MVC5 采用Unity依赖注入View详解
本文地址:http://www.lanhusoft.com/Article/109.html

浙公网安备 33010602011771号