Exercise 2: Injecting a View
In this exercise, you will learn how to apply Dependency Injection into a View by using new MVC 3 Features for Unity Integration. In order to do that, you will call a custom service inside the Store Browse View that shows a message with an image below. The service will introduce a new dependency inside the view as it has to be initialized in a point.
Then, you will integrate the project with Unity Application Block and create a Custom Dependency Resolver to inject the dependencies.
Task 1 – Creating a View that Consumes a Service
In this task, you will create a view that performs a service call to generate a new dependence. The mentioned service is a simple messaging service example that is included in this solution.
- Open the begin solution MvcMusicStore.sln at Source\Ex02-Injecting View\Begin.
Include MessageService.[cs|vb] and IMessageService.[cs|vb] classes from Source\Assets\[C#|VB] folder inside /Services folder.
The IMessageService interface defines two properties that are implemented by the MessageService class. These properties are Message and ImageUrl and are defined to hold the message and Url of the image to be displayed.
Create the folder /Pages at project root, and then add the class MyBasePage.[cs|vb] from Source\Assets\[C#|VB]. The base page you will inherit from has the following structure:
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting Views – MyBasePage – CSharp)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.Practices.Unity; using MvcMusicStore.Services; namespace MvcMusicStore.Pages { public class MyBasePage : System.Web.Mvc.ViewPage<MvcMusicStore.ViewModels.StoreBrowseViewModel> { [Dependency] public IMessageService MessageService { get; set; } } }
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting Views – MyBasePage – VB)
Imports Microsoft.Practices.Unity Public Class MyBasePage Inherits System.Web.Mvc.ViewPage(Of MvcMusicStore.StoreBrowseViewModel) <Dependency()> Public Property MessageService As IMessageService End Class
On behalf of a technical reason coming from the
ASP.NET engine, the
dependency at
IMessageService interface can’t be included into the respective
View Model Class.
The class
MyBasePage intercepts the relationship between the View and the View-Model so the dependency injection at MessageService can now be inherited by the View.
Open Browse.aspx view from /Views/Store project folder, and make it inherit from MyBasePage.[cs|vb]:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="MvcMusicStore.Pages.MyBasePage" %>
<%@ Page Title="" Language="vb" MasterPageFile="~/Views/Shared/Site.Master" Inherits="MvcMusicStore.MyBasePage" %>
Include in Browse view a call to MessageService, that will display an image and a message retrieved by the service:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="MvcMusicStore.Pages.MyBasePage" %>
FakePre-d01d2434f7df4ef0822ea83e489a925e-d7329229dd944017b50566e1ac6a12e9FakePre-12cd678421604970b5675179034edd12-8b7125dd6abe492b920da85d73ca6d20FakePre-dcd3d6f766bd416f861696494be7528c-c38c2fd849674fa5a6bcd9a1434ff449FakePre-718b85012b1440038a7ebc1d50f03845-e24722a79b93405e82f811c4ead411fbFakePre-3e7abfeb7d5f4aa6b39201a5d5c9d78c-94e059ba14064cada9b4e9ea170ee7aeFakePre-e0c74d1bf4ce4cd2a2ba0214483c8fe1-cef67d31c48542478a7b13e878d63fc1FakePre-77af07bc2788443cbe1cf815df27d748-ff97d3e3a98946f28845c48e2228e5e4<div> <%= this.MessageService.Message %> <br /> <img alt="<%: this.MessageService.Message %>"src="<%: this.MessageService.ImageUrl %>" /> </div>FakePre-ea902a63302a4801983bb37aafdc0098-d0f21c8d537149d0a8a3376331d0aca4
<%@ Page Title="" Language="vb" MasterPageFile="~/Views/Shared/Site.Master" Inherits="MvcMusicStore.MyBasePage" %>
FakePre-eb4b1f0ba8cf43a683219a8ec3f69315-8a562a0accc44a00a845187bbfe434b5FakePre-8a4bb4a0f2c84479b5f69428e4758cb5-77f4fe0e3e2344aebd8978863acac12bFakePre-9fc7297e02704fa08607acce7307041f-e26b7ef581904b14b199b6fe4fc0b694FakePre-0b38f129887e4ec38e294f82ddfdd9e3-30027bde1e9e4cd4b56e700e729ca043FakePre-8f606d25a6554568bfd81fd34c43b37d-9b86b37e985c422cb9013493584096c9FakePre-ffc300f6e9164f5d93a2222635e60f21-523c677d6ee84e72953884d99a0d46ddFakePre-effe53a8dfaa487f94fc58218a5cfaae-3266c8c1fe8e4904a1eb9fdfa06d9223<div> <%=Me.MessageService.Message%> <br /> <img alt="<%:Me.MessageService.Message%>"src="<%:Me.MessageService.ImageUrl%>" /> </div>FakePre-d8c0c61f4b60488caefe1bf1b484cf0b-72810ffa0e3b4d02a1c0305303e4a4eb
Task 2 – Including a Custom Dependency Resolver and a Custom View Page Activator
In the previous task, you injected a new dependency inside a view to perform a service call inside it. Now, you will start solving that dependence by implementing the new MVC 3 Dependency Injection Interfaces IViewPageActivator and IDependencyResolver.
You will include in the solution an implementation of IDependencyResolver that will deal with service retrieval by using Unity. Then you will include another custom implementation of IViewPageActivator interface that will solve the creation of Views.
Note: MVC 3 implementation for Dependency Injection had simplified the interfaces for service registration.
IDependencyResolver and
IViewPageActivator are a part of the new MVC3 features for Dependency Injection.
- IDependencyResolver interface replaces the previous IMvcServiceLocator. Implementers of IDependencyResolver must return an instance of the service or a service collection.
C#
public interface IDependencyResolver {
object GetService(Type serviceType);
IEnumerable<object> GetServices(Type serviceType);
}
Visual Basic
Public Interface IDependencyResolver
Function GetService(ByVal serviceType As Type) As Object
Function GetServices(ByVal serviceType As Type) As IEnumerable(Of Object)
End Interface
- IViewPageActivator interface provides more fine-grained control over how view pages are instantiated via dependency injection. The classes that implement
IViewPageActivator interface must create the instance of a view having context information.
C#
public interface IViewPageActivator {
object Create(ControllerContext controllerContext, Type type);
}
Visual Basic
Public Interface IViewPageActivator
Function Create(ByVal controllerContext As ControllerContext,
ByVal type As Type) As Object
End Interface
Copy the class CustomViewPageActivator.[cs|vb] from /Sources/Assets to the Factories folder. This class implements the IViewPageActivator interface to hold the Unity Container.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Microsoft.Practices.Unity; namespace MvcMusicStore.Factories { public class CustomViewPageActivator : IViewPageActivator { IUnityContainer container; public CustomViewPageActivator(IUnityContainer container) { this.container = container; } public object Create(ControllerContext controllerContext, Type type) { return this.container.Resolve(type); } } }
Imports Microsoft.Practices.Unity Public Class CustomViewPageActivator Implements IViewPageActivator Private container As IUnityContainer Public Sub New(ByVal container As IUnityContainer) Me.container = container End Sub Public Function Create(ByVal controllerContext As ControllerContext, ByVal type As Type ) As Object Implements IViewPageActivator.Create Return Me.container.Resolve(type) End Function End Class
CustomViewPageActivator is responsive for managing the creation of a view by using a Unity container.
Add the class UnityDependencyResolver.[cs|vb], which is included in the folder /Sources/Assets, in the project folder /Factories.
using System;
FakePre-92e5e5f04dca4747b9f34675cf32ce0d-4ee6dbef957e48f5b63cd60d2f9dac93FakePre-44e9fdcd2fe44e2dbf5678ef99c46f1c-f86f6dd24d38476e967d048a59594227FakePre-f76c1cb097b84080afbc5db56b6caaa0-6b4a634d1faa45d09d500bbf49816393FakePre-85164f70dc0b4e65b71c6e84edf16a90-c2e2c1f5a672408ea0f97a4cda853e1fFakePre-5026e9e561464147b95f5473204a4321-730b0718673744e98035d3f9bb9eedbeFakePre-f43db8034e6541f9922ac9725367618f-b244858e63f54f4ba740fd9cdaab4e72FakePre-7b7da82fb3504c2ea139bc112be22e4c-0331021ec7b84622992ce5596e61c4f1FakePre-0f8261b6e76d422382b0820c9bd3782e-2eaf299f978241948cca413cfe83109e public class UnityDependencyResolver : IDependencyResolverFakePre-c6289b7066a74805ac488fbfd59f11a4-9a6959f2a9614a8586f5270c7b679c8eFakePre-4a24ad10400e4550854e4b6b18d49b81-d3e3d985b70d48d9aa9f8f03387b661eFakePre-ea019d3d9f4a479ebc80abef256641fc-8926417c819845a3bb69ded41404ec8fFakePre-d4cf9e2393804b98ba57de84306c5787-b450e9bf41c04ccd80693bb55ff61ecbFakePre-a407a5db295c4807b2a58f71eed6dbca-1e8227a59e604c04ac45d5d065931130FakePre-397ea151209c4a3e9cf5a56dfa98a92a-c413333db82a4268b4853605e1733f83FakePre-cce17b6c5d954fad9bea44f03ae3bfe8-6939d015a8c64921b790c5cae3c69c0fFakePre-dd0b95bc0c0245948ea548aa1339f30e-58614c0cfb3943909f18b5dad9f11ad5FakePre-5dbb99962afb4f37a266571c64d453af-4daace4759344253802b386f54f716eeFakePre-8d57abf60d184d559bf411c31885ccf7-3b7e8a9e5d5541ef93f9b8a467e82feeFakePre-07cb901205e54096ab3e5cf29ab73064-b3dd263be7494ca583ae3de36318e383FakePre-4f4758af9b3e4ed88d17547427031ed9-07767146367447889a78a82826ca8d56FakePre-f31a4d69e15e4d0eb47c8278c6831541-9daf83a9304841258eae057ac2ace921FakePre-37941cf1bfc0457bb22db16d518f2932-719f71a2e1cd45f1b5e2f4e81955361dFakePre-93b31b0c83f24ea28835eb17ba671814-c3b471cf1b0d418193b10e3bbbf4270aFakePre-7498731312ba490588945161cf760e01-6a87b5089f584296b7bb70296aa0eaa3FakePre-f758c4cf87c742eca5f5b4a923c00969-ff31f7f2372c46db8a8e072e1bf91569FakePre-bbd532bbbda34aabb533582e7ffa96dc-da60a50fe7ce4b6e947f3b398bb2b354FakePre-92966281b45a4c849ddc91ccc1be8671-5be0dfb47ad8450785a00120d7bf366fFakePre-d22166671bb9470da3f788725e8f8157-83b5a7addd2e417ba1107af923d14627FakePre-70af5b516ff745859d7e0ea9474ac286-3b761c91cde444f49bf9ffb38749dd83FakePre-01d708eedc4947bd98c5cb09ca2dca82-9fc1a05be6d64da6be8ffa7855f8cd36FakePre-3d607bd06946407a8609ec49739788fa-835b44915386426ea7be56e0b0d16f1dFakePre-d9b30bb81b3c41b9976bca43c4bad979-d2dd672fa61f46699af8a392086921e3FakePre-b40d1fcc0f8d4c559661a3425941dbd9-911666320d1b414382e4fb7bd4921d77FakePre-170e35cf75364f4fae0b2460fcb23e1d-6e5a4b3de49244adb7458f36180c84d6FakePre-6066ab5c569342ecb6321cc53b272dd7-72691fedde4a4fd7abb07218a2fc67e7FakePre-27c7ce9e8045472387de224e20a8c6a8-860ed329eb98430f80e34e7986d92aa6FakePre-0f8db55fe52443248e4c316564a87eac-41cba6b9014c45ecb35d1a070dcad16bFakePre-b5856aa2a4e9403781fe829f38f9c4c7-3229160c63e1460a917b38b6977320e8FakePre-6345f5b74d984f44a76f2780dcfb46fb-42840afa326e450c92607d80114d9558FakePre-e95cba4f293b4c46bcc109b82482953d-c30d99bb9bd24b19ac9b6c9ab553d696FakePre-89a2d428b1744697b51fa7b11c74c9c7-e31262edad7a4a12bc1ada46463feb4fFakePre-ba40b0d0cfb748bab312281f12001b91-85f57e7eb8714151a6ca802d7059f9c6FakePre-a4b86a4698c445dda5df1c7bca62325b-f38ff6036b0040b68a67a31cfe00158b
Imports Microsoft.Practices.Unity
FakePre-c15a4425e58d408484581ff28d0e2428-08be2d7060314a54bc7036026fc3a651Public Class UnityDependencyResolver Implements IDependencyResolverFakePre-385d799a32f34d508ee20dee412e67a9-e920d41eac74456caff3e94b19362f77FakePre-58f9ba8a13694a2391bc5504ad945321-f4a41d5b21a24341ad39200137bfdb7fFakePre-b0f4a0d7c02a45b08b5b6b936e098bd0-881d31692b474411a7fc77e76f16a471FakePre-7cfbfa80c47248b3acc2597a65bc9b38-dcbc9c3e34e44fce9c59eb048653d57cFakePre-b07490e1cd1046929c2fa08de961993d-5e79e23559a84a7ab62411b8093d77e4FakePre-8da5ec86ed904ccab3aaf16e10a89284-82be3a2999514924a118f5b0abb7f6efFakePre-a790f1bdd5844c839eebbebaae2b8b44-e0b4b985cf564381889ee7f46dcbdff7FakePre-1ef980c564ed445aaf89750dcfab2980-d7537e1a108a43bfbbad800e6a76c8b4FakePre-c319f23d21c04622978a661937483a96-061d6d51728b4eda81eccceff4de59adFakePre-5b72a00a24e545c098a862131749f2aa-ee829d0a137d40b5acbcfe91971232d2FakePre-a25022fdd8b34d8080bc85ec0499a8c9-34d0b3f767bf46689d3fd2b5f17cf2eaFakePre-138c1e153cd94db69022a082aefab362-7fce8b7758c546e78a198e71e77d4f94FakePre-ced92cd41a5c4baa8a00fe75a2bafe7d-056fa70ce7e64e61a952c5d1a78c2ff7FakePre-0285649e38cd4dd782ae3380a1f20ea9-e997754e9c3a4cd1a681b9fff2ac826cFakePre-d1c71199e1d145cbb4d353d6fa6de15c-e18732808085484c94834c07e23778ebFakePre-aff54514b7134794b95a5c31b95a9acf-b0e7ace26d2a4fb9a88db2571087ed48FakePre-4a567e77821c496481fce59552f38277-b9e5565a36464c538d1b9fe59af874a1FakePre-6a16a4db518542d2a4ca045f9008becc-0b28ceb81977441587e9480f38368cceFakePre-17cb14029de4415090c341bae2ec4e64-aa39b36a177f411283d3f75e355242e1FakePre-4df7a98a0e3e47a098a9f1185fb4b72d-cfe78b8ab5054f97b7e6f4ea4714d8d9FakePre-291fd1f6ddb24871a0dfe512f723fca1-bbfe1e0076064ecc85c314984a8c01b3FakePre-3fc77e72e6734286848189ce33bc31eb-333ea3e8450c4f99b4eafa7e781a2119FakePre-e697e74d77714d3fa2a400559bd39255-085c1155c36444ebbc35fcba7bafa6d9FakePre-6fa1e9418f3545b39c067e5e57a830ff-76c50328b4074e75a4972e70aca7c1c4FakePre-8b9fa49ec3ad49c8b3f5346314c7f2f2-5f9d576283634cb7b59ab0d7e8374846FakePre-b9c9224fb375455b8e886b37e14729d2-5f226cdba2b642a3bb91813c25928a0cFakePre-3efaff4b2d4949df8bd0eadb0294b9c1-d02a96ae6c4741fabc9f5afef272ae80FakePre-3013af37e46244f7a5d732e54719178b-ca5046efa8a045f39306f3eebb8ddf39FakePre-9a348adda7844e0f940e001349ed0124-212f6d0c35f1423da4aac82783a7ec6eFakePre-fdc5725dd5c640b297686530ea82a425-8b42ab71342942498ccabdc03cf42232FakePre-bda2d094d1cd48938dff82b150663b03-6aa8e306ac81427a8558e293bd3aa606
UnityDependencyResolver class is a custom DependencyResolver for Unity. When a service can’t be found inside the Unity container, base resolver is invocated.
In the following task both implementations will be registered, to let the model know where to locate the services and where to create the views.
Task 3 – Registering for Dependency Injection in Global.asax.[cs|vb] Application_Start
In this task, you will put all the previous things together to make Dependency Injection Work.
Up to now you have the following elements:
- A Browse View that inherits from MyBaseClass and consumes MessageService.
- An intermediate MyBaseClass class that has dependency injection declared for the service interface.
- A MessageService service and its Interface IMessageService.
- A custom dependency resolver for Unity: UnityDependencyResolver, that deals with service retrieval.
- A View Page activator: CustomViewPageActivator, that creates the page.
To inject Browse View, you will now register the custom dependency resolver into the Unity container.
- Open Global.asax.[cs|vb] at project root.
Register an instance of MessageService into Unity container that will initialize the service:
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting a View – GlobalAsax Registration – Csharp)
protected void Application_Start()
FakePre-02e6bc575d33484ca04838fafea49c52-fbc5753ca3d74c808d1c4d4ffc19801eFakePre-e98afdea67574b99b0de3f1efab80020-bebf90cd7c754a189474259209a554d2FakePre-0404e28d7fd7453cace5bb6c09df946a-83b3b7537da14dd984d18c2b9b98d304FakePre-61ecd21ff41e4d9bb3a49ed9a4e9a94d-edabcd49f3fc4b1c82663c71992456aeFakePre-6bbc38859f0c4b0c88603c18a76e0043-c028ef256d5c4c68ad46fba1784069e0FakePre-a7ad83513b91465c8c1b53b5dda0f2e6-9a92017a545e4560a77d209759409c4aFakePre-48dd1a5adc7d41d3a7e5d8da0ea04305-8cf5828a91a94b64969ff2455c41acc1FakePre-cbbfcaf0b094439f969831f9ebf01b03-b58f560df7c2473ca05d5479a80eb3dcFakePre-5c78d2aaed8d45458465019e36148e25-6b692247f7ef4df38bbf46f263626e1bFakePre-cf8aa14edc774771b897711b468cec3b-c9fb749563cd4f569e6645cae5151484FakePre-a24bb1049ebc410c930d358a5cf6cc8a-a21edc8a301b43928c687d8464c9435bFakePre-df721d83896546d09b6c6737b9e32fc2-e75a934c6373478bb3234d510293f066FakePre-5ad4b2e94ba84e15bdaee8942ed247bf-6a069f732fe64f50a0fc66ea77aba604 container.RegisterInstance<IMessageService>(new MessageService { Message = "You are welcome to our Web Camps Training Kit!", ImageUrl = "/Content/Images/logo-webcamps.png" });FakePre-43e61db5fd064bee979e81b494a7f4c4-9f858faea1b34e028a6637495b5bdc5cFakePre-5163f1eeddfe43afb94a69ec6c7af246-a594bb100b5a49bba7cd635b20045dce
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting a View – GlobalAsax Registration – VB)
…
FakePre-a954b5125c504ac0810bda70560423e6-469762b5325f44d48e49b2c74a0605dfFakePre-7b71fa2fb9a14311b156bc2539a8664e-e831e2e16fcc495a9aea3eeaa2db952eFakePre-d614955ee77b44249b5d92f7fe4ec0e2-612e6181daa844c09cad68d4fc5541f1FakePre-c24eebfd81604579ae96ab7401334b80-d243195208cd432f86e2c252be460145FakePre-09fe40a281354a5985387beddf553f3a-c426478da6be4d019be97505678028e1FakePre-58b2b25c7e6c4efb9a64be6909071ad7-dc6ec31a48284733809fe606da312163FakePre-c42b26e696804fd1a1f5c9fc28bb855b-72a6a3a8b1e840d68ac042c0cbc02171FakePre-9e8a5255bc8249519a1b78dc5c835e7a-8f901a3fbdbf4597930699039940ca7fFakePre-e8965cc8ce694a50a302c986756891b3-22f4170fa9674b929f74513254e9a29aFakePre-b218c5a371684bed938ae9a1ee826ec4-8c510499ab9544219c9c6682a7bcc7c1FakePre-1dea64d331b94c958cb0db0bcd790796-9af158a8784d4323b1abe1f24f2a50f9FakePre-26ee61ea7e2a4f7fbfb56c1850c1de7e-ea612a20ded7439194bb578311365476FakePre-98fce8e4eec549a9b8887ee913de2b31-e12a84bea97b402fbe9838e3a67b9b3b container.RegisterInstance(Of IMessageService)(New MessageService With { .Message = "You are welcome to our Web Camps Training Kit!", .ImageUrl = "/Content/Images/logo-webcamps.png"})FakePre-432ac38170ba4434acd990ff72c45374-203516bf44164631b23bac19bf064252FakePre-33b27c03c7d946309471416553dc2734-83ae79d3c01444059d7d0d6521688df9
Register CustomViewPageActivator as a view page activator into Unity container:
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting a View – GlobalAsax Registration 2 – Csharp)
protected void Application_Start()
FakePre-d198f5a5aa084ed3bb0579282cee80d1-c399a1ca650a4691bf081e4962fd35f0FakePre-17ab23362cf34afbba364292a9c6b735-fe1d678f7dc54e7cab8c03e60e030ae0FakePre-b5fd65760fbd4e619c3c10d7b53b9b89-b6f0b59baef14afb9983792febff4900FakePre-8451b708115d41c4b11c3ee00dd92dbf-9ebfda31873d4afea3998009360c3b27FakePre-ab6879d970cd416bb7fb880f3b0ad4eb-8fdb9b992a3447e2a042d1c72a694c90FakePre-9f215f3e125e417abdb5ac71bad152d9-acdad44b35204abab16924a737f26a2f container.RegisterType<IViewPageActivator, CustomViewPageActivator>(new InjectionConstructor(container));FakePre-ba9152a724334dd9a4190f2d17513b58-2aadbe12bbaa41a3a399384f98dfe651FakePre-a6e0f784dfb648b6bf8b36edf3c19564-8564124433a34853a91fba846cb36833
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting a View – GlobalAsax Registration 2 – VB)
Protected Sub Application_Start()
FakePre-70fcdfe5f7274a0384b18e8ae063a9cb-b50be37a48274e20895035ef609fc875FakePre-0ea4c8d9712444209cbaffd2c325e59d-737bd41ea053471496ef8717b6ca8398FakePre-37441c8f6b974325b3c39f3265ef02ec-d19b0ca056074b60b6b897c09ceb40e7FakePre-2825c0ae2cd3474d82e8cde6e04097f2-d9d03d56cd5d41128555f727d886c3d8FakePre-29a006003977408083d311b8199562b9-b15302979eea4195bc0a3b33fb466a06 container.RegisterType(Of IViewPageActivator, CustomViewPageActivator)(New InjectionConstructor(container)) FakePre-5770e04cc5964fafb02635589f365aa7-77c2969002f244bdb1baffffbbb21b4f
Replace MVC 3 default dependency resolver with an instance of UnityDependencyResolver:
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting a View – GlobalAsax Registration 3 – Csharp)
protected void Application_Start()
FakePre-b2ee332a420a4f4e9bd37b4efcdcb878-817103e61a5a4a3191b7939da75da056FakePre-20c24a6b8e3d4ac0862ceec0d34f74c0-3a3331e143474f3e9afa6e43bb7a0fc4FakePre-b0de3c280ade40d9b1c53d124e8339c2-d4d66f8438e84107b297d5dad6420807FakePre-2edd52aa96b04bc6a9e8af2378d1f3ba-b31f525562ba423ca85679ea869fb768FakePre-86578223e2804d21961e8b52e6cd6299-8f20d8ef9fec40d8b37126af0dcd3f4fFakePre-4f32406226194103be6b2df7dec56245-433d8aa3478945ee9b09309aa70d307cFakePre-14458c7947ad49fd87531869c4c43ff1-266a192cc9c34fd9afd6fea892b1a379FakePre-83afad00dee948d29348e0691b35f3ce-12c527d7dbde48a09f9392f39978b7d5FakePre-002cac3223344914bb349b069e65bd69-edf3849798fd41238bdcdbdd22d82095FakePre-09006e3cdeb4426da2aa0692d1ee6d41-3b275ffc12e44dc3a95e3e3e534a2feaFakePre-09c0f4f8459248f1aac2f97ae1730722-3172b5ac2bc14351a13ef98f0b59043dFakePre-4613a177086c4f8a85d0bcdcbfeb8d1b-260ba74532ff4242b533e384ef652287FakePre-e6747288b11d43ad8cda62e6340514e5-b1c14b5ff5454a0ab0bcdaaaf9f2f40aFakePre-895fef90b669410b973fefbe541a2aca-f76cf9f6bf244afe9dbbbea50f9b09b9FakePre-3f941872bc3e4d1da87b11cf6dbec958-821ef4faf36d495396e07e3014b78213FakePre-0707946e75364af78de541b5cab14484-044ec8b41b0d44f4b6c3825ebb078173FakePre-d183d8482bcd4caa95ea8e0189fa7a9f-e304c25c637c49788399aa2945b5e149FakePre-36761643538549cdb4c0879214478769-35c1fd27a43e4db49c3181e202e6e0f2FakePre-2bc756e34f1d48499a9ba010ca7577ee-ad9b0f3d13934b0ea5d593e6e05c9ae0 IDependencyResolver resolver = DependencyResolver.Current; IDependencyResolver newResolver = new UnityDependencyResolver(container, resolver); DependencyResolver.SetResolver(newResolver);FakePre-1f0e97771df44dea85573a5f6cf9c1e7-6b1c9f7962f141b9ac0c9b3d8f308601FakePre-fcb469de65334ac0bfa0ee56a8951dee-d0882c1dd6804aa9924c24a07dcb0e0fFakePre-e4cdb6f3554047ca900fb2b3840be82e-74a4e2bc079448d68e755aea92909dac
(Code Snippet – ASP.NET MVC Dependency Injection – Ex02 Injecting a View – GlobalAsax Registration 3 – VB)
Protected Sub Application_Start()
FakePre-c5a28132cb274792ace34ed3a6450a9f-d8896e99f58f4bb6a91588eaca342758FakePre-69486b52885f403d9e21d8b2968a3bc0-5c6f7bc68b514253a9730a25c868aa95FakePre-6547295c970043bb850a475d0df259e4-9c1b4cd534434350be3c7161ef6c9f4bFakePre-bbce0c67a11f4118b6208b02e7c014b4-31b42ee4129c419780a126903ec5027eFakePre-f05fe413e87245f8a4c234ee14f334a3-a7fd13e92bcf47b7910860e29bc7265bFakePre-5bedf063c0754d6087d82379261c0f61-4d626dc49924410d965da50412befabcFakePre-4e045532b89b421698712e57e876cab0-6e3164c9afda477cb843ac44c33b5afdFakePre-521fae2b5b5748fdb695e5e1e5dac82e-1f5cf6377ae641d29fde6b3ddc272959FakePre-f088c377b6634cd0bfaace0e423cb84d-bc0bc7fa5ff74416a27f5ffd3aec820dFakePre-9629abd3e3ca467d81f0c065e3d255bf-638964e164e04d39834d6c023268d7f8FakePre-45acb1ad49b840bfbcdb4fac7a9ef80e-7b0ff54efaae4eee807ecf6b61fe8e1cFakePre-b2cd22c56e614898a0bf2b3652793709-9bcdd71c6f7a40e3b9d8931b9bc79133FakePre-5265793c58aa4f2c9cb44df5e5f46b12-c79cb60e03914984aa45f69aa0e91507FakePre-01b1e8a03f7a48adbfd41995bc8e2988-e6f843ea5cba4989b0df0c245f01db6eFakePre-3d8b47b609f4467a913105393e0a7e41-3e7f975b4c3342ba9bf65ce1461e240cFakePre-24b4bb24e7324c8ebc422d17b696000b-5026389a6ffb4934baf047a949cc1cfbFakePre-b9eeebacef3a42cdb42ed4b91a9fa798-637dff8639f044f7a4473c054823b0e6FakePre-77843b392acb4b8e95a706bfa3c256b1-96fe52b9325d4c8db45f7a02711dcb7eFakePre-1503c4192ddb45a8a7e31f00c29d13f8-6bfb79bd7c6e490fb8428bd674b5ddcbFakePre-dbfba999f2ad4a0892b35097aecd6f9f-35a2e747bcfb46ec9be5ab229649e15a Dim resolver As IDependencyResolver = DependencyResolver.Current Dim newResolver As IDependencyResolver = New UnityDependencyResolver(container, resolver) DependencyResolver.SetResolver(newResolver) FakePre-0b5bfc1411fb444ab507a901697d5706-574c9c00202a49cda3e61a69de8d9654FakePre-e3c042809ec94ac2b485855188f43c58-391fab3277f1474596240158ca561898FakePre-7a743188b5ba4fa4bac44c9fc59f159b-60c3cd719c0b46a39f2895a445549c9dFakePre-cdd0638167974fd88e7e96f1268748ef-cad48aa52b4e4ab39b52262ec7060d5d
ASP.NET MVC3 provides a default dependency resolver class. To work with custom dependency resolvers as the one we have created for unity, this resolver has to be replaced.
Task 4 – Running the Application
In this task, you will run the application to verify that the Store Browser consumes the service and shows the image and the message retrieved by it:
- Press F5 to run the application, where Home page will load.
Browse to /Store and enter to any of the genres that are shown below. In this example, we enter to “Rock”:
Figure 1
MVC Music Store - View Injection
- Close the browser.
Next Step
Exercise 3: Injecting Action Filters