Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

Code First Approach using Entity Framework 4.1, Inversion of Control, Unity Framework, Repository & Unit of Work Pattern and MVC3 Razor View

, 26 Nov 2014 CPOL
My effort in this article was to put some light on building a generic multilayered architecture using Entity Framework 4.1 and MVC3 razor view engine.
SourceCode-noexe.zip
SourceCode
CodeFirstData
DBInteractions
EntityRepositories
Properties
CodeFirstEntities
CodeFirstEntities.suo
CodeFirstEntities
obj
Debug
Properties
packages
EntityFramework.4.1.10331.0
EntityFramework.4.1.10331.0.nupkg
lib
jQuery.1.5.1
Content
Scripts
jQuery.1.5.1.nupkg
jQuery.UI.Combined.1.8.11
Content
Content
themes
base
images
ui-bg_flat_0_aaaaaa_40x100.png
ui-bg_flat_75_ffffff_40x100.png
ui-bg_glass_55_fbf9ee_1x400.png
ui-bg_glass_65_ffffff_1x400.png
ui-bg_glass_75_dadada_1x400.png
ui-bg_glass_75_e6e6e6_1x400.png
ui-bg_glass_95_fef1ec_1x400.png
ui-bg_highlight-soft_75_cccccc_1x100.png
ui-icons_222222_256x240.png
ui-icons_2e83ff_256x240.png
ui-icons_454545_256x240.png
ui-icons_888888_256x240.png
ui-icons_cd0a0a_256x240.png
Scripts
jQuery.UI.Combined.1.8.11.nupkg
jQuery.Validation.1.8.0
Content
Scripts
jQuery.Validation.1.8.0.nupkg
jQuery.vsdoc.1.5.1
Content
Scripts
jQuery.vsdoc.1.5.1.nupkg
Modernizr.1.7
Content
Scripts
Modernizr.1.7.nupkg
_ReSharper.CodeFirstEntities
AspFileDataCache.dat
BuildScriptCache
.crc
.version
1
79c652.dat
CompletionStatistics
Statistics.dat
ConditionalNames
.crc
.version
4
3fddd5b7.dat
JavaScriptCache
.crc
.version
1
545da353.dat
61d4b734.dat
2
3245028f.dat
3
23ce8008.dat
4
3fddd5b7.dat
5
71112476.dat
7
3bd63.dat
8
69c2350.dat
JSTest
.crc
.version
7
337c7624.dat
MVC
.crc
.version
7
337c7624.dat
NamedArguments
.crc
.version
4
3fddd5b7.dat
PersistenIdIndex.bin
RecentItems
RecentFiles.dat
Resources
.crc
.version
SymbolCache.bin
TagPrefixes
.crc
.version
1
79c652.dat
TodoItems
.crc
.version
4
3fddd5b7.dat
WebSymbols
.crc
.version
1
79c652.dat
WordIndex
.crc
.version
3
23ce8008.dat
525a768.dat
4
3fddd5b7.dat
7
278dea1d.dat
XmlIndex
Accessibility.xml
59F683E5.bin
97C5C74B.bin
EntityFramework.xml
6E572F9F.bin
EF3E2830.bin
Microsoft.Build.Framework.4.0.0.0.Nullness.Generated.xml
91BD6FD3.bin
Microsoft.Build.Framework.xml
5B4D04B5.bin
Microsoft.Build.Tasks.v4.0.4.0.0.0.Nullness.Generated.xml
AB623953.bin
Microsoft.Build.Tasks.v4.0.xml
390E8A25.bin
Microsoft.Build.Utilities.v4.0.4.0.0.0.Nullness.Generated.xml
07D57913.bin
Microsoft.Build.Utilities.v4.0.xml
1A2D939D.bin
Microsoft.CSharp.4.0.0.0.Nullness.Generated.xml
10F25633.bin
Microsoft.CSharp.xml
4DDA1CCA.bin
Microsoft.JScript.10.0.0.0.Nullness.Generated.xml
47DE7F86.bin
Microsoft.JScript.xml
F74F3354.bin
Microsoft.Practices.Unity.Configuration.xml
5AA51D65.bin
70886068.bin
Microsoft.Practices.Unity.Interception.Configuration.xml
209059E5.bin
4E009688.bin
Microsoft.Practices.Unity.Interception.xml
59AC76BB.bin
E837E3D6.bin
Microsoft.Practices.Unity.xml
ABA3AEF6.bin
CC291A3B.bin
Microsoft.Transactions.Bridge.3.0.0.0.Nullness.Generated.xml
C7619374.bin
Microsoft.Transactions.Bridge.4.0.0.0.Nullness.Generated.xml
CB57B7D3.bin
Microsoft.Transactions.Bridge.xml
196DF037.bin
Microsoft.VisualBasic.10.0.0.0.Contracts.xml
905D2256.bin
Microsoft.VisualBasic.10.0.0.0.Nullness.Generated.xml
34A06846.bin
Microsoft.VisualBasic.10.0.0.0.Pure.xml
90D5FE85.bin
Microsoft.VisualBasic.Activities.Compiler.10.0.0.0.Nullness.Generated.xml
276128C6.bin
Microsoft.VisualBasic.xml
EE79FEBF.bin
Microsoft.VisualC.xml
3732B488.bin
90D3ABE6.bin
mscorlib.2.0.0.0.Contracts.xml
2C2FE705.bin
mscorlib.2.0.0.0.Interfaces.Nullness.Generated.xml
C418674D.bin
mscorlib.2.0.0.0.Nullness.Generated.xml
E2B19D75.bin
mscorlib.2.0.0.0.Pure.xml
B22E2EB6.bin
mscorlib.4.0.0.0.Contracts.xml
0DED0883.bin
mscorlib.4.0.0.0.Interfaces.Nullness.Generated.xml
620DC5CB.bin
mscorlib.4.0.0.0.Nullness.Generated.xml
772ECBB3.bin
mscorlib.4.0.0.0.Pure.xml
6572C670.bin
mscorlib.I18n.xml
366D6FC8.bin
mscorlib.Nullness.Manual.xml
A029C282.bin
mscorlib.ValueFlow.xml
4E59B0BF.bin
mscorlib.xml
05998BE8.bin
1D362982.bin
743ADB6C.bin
SMDiagnostics.3.0.0.0.Nullness.Generated.xml
8AA32174.bin
SMDiagnostics.4.0.0.0.Nullness.Generated.xml
8E9945D3.bin
System.2.0.0.0.Contracts.xml
929BDA85.bin
System.2.0.0.0.Nullness.Generated.xml
BE8780F5.bin
System.2.0.0.0.Pure.xml
8CF3F236.bin
System.4.0.0.0.Contracts.xml
7458FC03.bin
System.4.0.0.0.Nullness.Generated.xml
5304AF33.bin
System.4.0.0.0.Pure.xml
403889F0.bin
System.Activities.4.0.0.0.Nullness.Generated.xml
679C2793.bin
System.Activities.DurableInstancing.4.0.0.0.Nullness.Generated.xml
5B8A77D3.bin
System.Activities.DurableInstancing.xml
04D57C40.bin
System.Activities.xml
33E2C3AB.bin
System.ComponentModel.DataAnnotations.3.5.0.0.Nullness.Generated.xml
B5111ED1.bin
System.ComponentModel.DataAnnotations.4.0.0.0.Nullness.Generated.xml
EB11BC93.bin
System.ComponentModel.DataAnnotations.I18n.xml
E1E89968.bin
System.ComponentModel.DataAnnotations.xml
13D34939.bin
B9A8C76A.bin
System.Configuration.2.0.0.0.Contracts.xml
93875E45.bin
System.Configuration.2.0.0.0.Nullness.Generated.xml
FB5BB8B5.bin
System.Configuration.2.0.0.0.Pure.xml
07AB3D76.bin
System.Configuration.4.0.0.0.Contracts.xml
8AA99CC3.bin
System.Configuration.4.0.0.0.Nullness.Generated.xml
5C04A9F3.bin
System.Configuration.4.0.0.0.Pure.xml
A30FD330.bin
System.Configuration.Install.2.0.0.0.Contracts.xml
BF2FCAE5.bin
System.Configuration.Install.2.0.0.0.Nullness.Generated.xml
03AF4D15.bin
System.Configuration.Install.4.0.0.0.Contracts.xml
F6158D63.bin
System.Configuration.Install.4.0.0.0.Nullness.Generated.xml
28353B53.bin
System.Configuration.Install.xml
3B89BCB1.bin
7FB1C71F.bin
System.Configuration.xml
092A1070.bin
2AA4525E.bin
System.Core.3.5.0.0.Contracts.xml
1D445C21.bin
System.Core.3.5.0.0.Nullness.Generated.xml
585EA4D1.bin
System.Core.3.5.0.0.Pure.xml
C497F7D2.bin
System.Core.4.0.0.0.Contracts.xml
9A69C6A3.bin
System.Core.4.0.0.0.Nullness.Generated.xml
8E5F4293.bin
System.Core.4.0.0.0.Pure.xml
D7464B10.bin
System.Core.LinqTunnel.xml
63F26974.bin
System.Core.Nullness.Manual.xml
31BDD0E2.bin
System.Core.xml
11686E5B.bin
944CB108.bin
System.Data.2.0.0.0.Contracts.xml
C6AE46A5.bin
System.Data.2.0.0.0.Nullness.Generated.xml
A9765ED5.bin
System.Data.2.0.0.0.Pure.xml
A61761D6.bin
System.Data.4.0.0.0.Contracts.xml
68A7E423.bin
System.Data.4.0.0.0.Nullness.Generated.xml
7A169013.bin
System.Data.4.0.0.0.Pure.xml
595BF890.bin
System.Data.DataSetExtensions.4.0.0.0.Nullness.Generated.xml
DB866913.bin
System.Data.DataSetExtensions.I18n.xml
B16CE5E8.bin
System.Data.DataSetExtensions.xml
4A8BA0A6.bin
System.Data.Entity.3.5.0.0.Nullness.Generated.xml
FAE5A5D1.bin
System.Data.Entity.4.0.0.0.Nullness.Generated.xml
30E64393.bin
System.Data.Entity.xml
9398E105.bin
EB528336.bin
System.Data.I18n.xml
51BDCCE8.bin
System.Data.Linq.3.5.0.0.Nullness.Generated.xml
3938B6B1.bin
System.Data.Linq.4.0.0.0.Nullness.Generated.xml
0D37D4F3.bin
System.Data.Linq.Attributes.xml
B77F6C29.bin
System.Data.Linq.I18n.xml
A25BD988.bin
System.Data.Linq.xml
34869A17.bin
B30DAF64.bin
System.Data.OracleClient.2.0.0.0.Nullness.Generated.xml
7754BD95.bin
System.Data.OracleClient.4.0.0.0.Nullness.Generated.xml
9BDAABD3.bin
System.Data.OracleClient.xml
27DDCE31.bin
9427B35F.bin
System.Data.Services.Client.3.5.0.0.Nullness.Generated.xml
2ADFF3D1.bin
System.Data.Services.Client.4.0.0.0.Nullness.Generated.xml
60E09193.bin
System.Data.Services.Client.xml
0B993FC7.bin
3CEE3C54.bin
System.Data.Services.Design.3.5.0.0.Nullness.Generated.xml
C417FF51.bin
System.Data.Services.Design.4.0.0.0.Nullness.Generated.xml
FA189D13.bin
System.Data.Services.Design.xml
CC0FCF1F.bin
E842CE0C.bin
System.Data.SqlXml.2.0.0.0.Nullness.Generated.xml
956E4495.bin
System.Data.SqlXml.4.0.0.0.Nullness.Generated.xml
B9F432D3.bin
System.Data.SqlXml.xml
48CF6F29.bin
8761C3C7.bin
System.Data.xml
7BF6DA70.bin
CFFAA41E.bin
System.Deployment.2.0.0.0.Nullness.Generated.xml
E0B9A455.bin
System.Deployment.4.0.0.0.Nullness.Generated.xml
B159D593.bin
System.Deployment.xml
2C6EE0D7.bin
CC017739.bin
System.Design.2.0.0.0.Nullness.Generated.xml
73443E95.bin
System.Design.4.0.0.0.Nullness.Generated.xml
97CA2CD3.bin
System.Design.xml
66D504B2.bin
94F2BB5C.bin
System.DirectoryServices.2.0.0.0.Nullness.Generated.xml
78AE4555.bin
System.DirectoryServices.4.0.0.0.Nullness.Generated.xml
494E7693.bin
System.DirectoryServices.Protocols.2.0.0.0.Nullness.Generated.xml
6EFB7AB5.bin
System.DirectoryServices.Protocols.4.0.0.0.Nullness.Generated.xml
CFA46BF3.bin
System.DirectoryServices.Protocols.xml
072F5742.bin
A1B5E32C.bin
System.DirectoryServices.xml
14397267.bin
796A6F49.bin
System.Drawing.2.0.0.0.Contracts.xml
AF2FFA85.bin
System.Drawing.2.0.0.0.Nullness.Generated.xml
93BFA0F5.bin
System.Drawing.2.0.0.0.Pure.xml
54741236.bin
System.Drawing.4.0.0.0.Contracts.xml
90ED1C03.bin
System.Drawing.4.0.0.0.Nullness.Generated.xml
283CCF33.bin
System.Drawing.4.0.0.0.Pure.xml
07B8A9F0.bin
System.Drawing.Design.2.0.0.0.Nullness.Generated.xml
CB20AA15.bin
System.Drawing.Design.4.0.0.0.Nullness.Generated.xml
EFA69853.bin
System.Drawing.Design.xml
7000BF52.bin
E232227C.bin
System.Drawing.xml
2F425360.bin
4AE71CCE.bin
System.Dynamic.4.0.0.0.Nullness.Generated.xml
8CC52453.bin
System.EnterpriseServices.2.0.0.0.Nullness.Generated.xml
F38E6055.bin
System.EnterpriseServices.4.0.0.0.Nullness.Generated.xml
C42E9193.bin
System.EnterpriseServices.xml
484CBB5B.bin
5D2D9EF5.bin
System.I18n.xml
E767B348.bin
System.IdentityModel.3.0.0.0.Nullness.Generated.xml
8D398F74.bin
System.IdentityModel.4.0.0.0.Nullness.Generated.xml
912FB3D3.bin
System.IdentityModel.Selectors.3.0.0.0.Nullness.Generated.xml
896B6974.bin
System.IdentityModel.Selectors.4.0.0.0.Nullness.Generated.xml
8D618DD3.bin
System.IdentityModel.Selectors.xml
17C23871.bin
8E1D2D30.bin
System.IdentityModel.xml
673E4F98.bin
FCECB5D9.bin
System.Management.4.0.0.0.Nullness.Generated.xml
3E6A0593.bin
System.Management.xml
8DDFA253.bin
System.Messaging.2.0.0.0.Nullness.Generated.xml
2C9BE975.bin
System.Messaging.4.0.0.0.Nullness.Generated.xml
C11917B3.bin
System.Messaging.xml
4EE26F6E.bin
94C73840.bin
System.Nullness.Manual.xml
AC02D602.bin
System.Numerics.4.0.0.0.Nullness.Generated.xml
0D729213.bin
System.Numerics.xml
F65D6778.bin
System.Runtime.Caching.4.0.0.0.Nullness.Generated.xml
8BB7FA53.bin
System.Runtime.Caching.xml
6E34C19B.bin
System.Runtime.DurableInstancing.4.0.0.0.Nullness.Generated.xml
94C6B993.bin
System.Runtime.Remoting.2.0.0.0.Nullness.Generated.xml
357DCF15.bin
System.Runtime.Remoting.4.0.0.0.Nullness.Generated.xml
5A03BD53.bin
System.Runtime.Remoting.xml
99D48EF3.bin
F93434DD.bin
System.Runtime.Serialization.3.0.0.0.Nullness.Generated.xml
65D50AD4.bin
System.Runtime.Serialization.4.0.0.0.Nullness.Generated.xml
4774B3B3.bin
System.Runtime.Serialization.Attributes.xml
E749FA69.bin
System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Contracts.xml
6A729305.bin
System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Nullness.Generated.xml
64B5C975.bin
System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Contracts.xml
4C2FB483.bin
System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Nullness.Generated.xml
F932F7B3.bin
System.Runtime.Serialization.Formatters.Soap.xml
AC344D82.bin
FD932A2C.bin
System.Runtime.Serialization.xml
014E8BDC.bin
F0B1191D.bin
System.Security.2.0.0.0.Contracts.xml
7E44A425.bin
System.Security.2.0.0.0.Nullness.Generated.xml
25CDEC55.bin
System.Security.2.0.0.0.Pure.xml
895D4F56.bin
System.Security.4.0.0.0.Contracts.xml
203E41A3.bin
System.Security.4.0.0.0.Nullness.Generated.xml
F66E1D93.bin
System.Security.4.0.0.0.Pure.xml
3CA1E610.bin
System.Security.xml
07099898.bin
55841E76.bin
System.ServiceModel.3.0.0.0.Nullness.Generated.xml
F3859074.bin
System.ServiceModel.4.0.0.0.Nullness.Generated.xml
F77BB4D3.bin
System.ServiceModel.Activation.4.0.0.0.Nullness.Generated.xml
98DDA2B3.bin
System.ServiceModel.Activation.xml
B91280C8.bin
System.ServiceModel.Activities.4.0.0.0.Nullness.Generated.xml
7FF57E53.bin
System.ServiceModel.Activities.xml
AB91D397.bin
System.ServiceModel.Web.3.5.0.0.Nullness.Generated.xml
B061E091.bin
System.ServiceModel.Web.4.0.0.0.Nullness.Generated.xml
3A483B53.bin
System.ServiceModel.Web.xml
4B4A489F.bin
AFCF614C.bin
System.ServiceModel.xml
263DB992.bin
BE8B8173.bin
System.ServiceProcess.2.0.0.0.Nullness.Generated.xml
64FAEAD5.bin
System.ServiceProcess.4.0.0.0.Nullness.Generated.xml
359B1C13.bin
System.ServiceProcess.xml
2335E116.bin
B46FDC38.bin
System.Transactions.2.0.0.0.Nullness.Generated.xml
68818E55.bin
System.Transactions.4.0.0.0.Nullness.Generated.xml
3921BF93.bin
System.Transactions.xml
7D351899.bin
A0E212F7.bin
System.Web.2.0.0.0.Contracts.xml
BAEFDF05.bin
System.Web.2.0.0.0.Nullness.Generated.xml
B4E89575.bin
System.Web.2.0.0.0.Pure.xml
931326B6.bin
System.Web.4.0.0.0.Contracts.xml
9CAD0083.bin
System.Web.4.0.0.0.Nullness.Generated.xml
4965C3B3.bin
System.Web.4.0.0.0.Pure.xml
4657BE70.bin
System.Web.Abstractions.3.5.0.0.Nullness.Generated.xml
06EACF11.bin
System.Web.Abstractions.xml
A00BB8E5.bin
CCA4F1B6.bin
System.Web.ApplicationServices.4.0.0.0.Nullness.Generated.xml
3969B1B3.bin
System.Web.ApplicationServices.xml
331D36EA.bin
System.Web.Attributes.xml
C91B0A69.bin
System.Web.DataVisualization.4.0.0.0.Nullness.Generated.xml
01959F33.bin
System.Web.DataVisualization.xml
8800EDF4.bin
System.Web.DynamicData.4.0.0.0.Nullness.Generated.xml
EB87AD13.bin
System.Web.DynamicData.xml
DC2CFBFB.bin
System.Web.Entity.4.0.0.0.Nullness.Generated.xml
F4A1E313.bin
System.Web.Entity.xml
A8FBC385.bin
System.Web.Extensions.3.5.0.0.Nullness.Generated.xml
E9EAAC91.bin
System.Web.Extensions.4.0.0.0.Nullness.Generated.xml
73D10753.bin
System.Web.Extensions.xml
1594D3F4.bin
F1886C67.bin
System.Web.Helpers.xml
0E774D98.bin
System.Web.I18n.xml
DDDA67C8.bin
System.Web.Mvc.Annotations.xml
B5228072.bin
System.Web.Mvc.Attributes.xml
A9871169.bin
System.Web.Mvc.I18n.xml
3B8D2EC8.bin
System.Web.Mvc.Nullness.Manual.xml
66942182.bin
System.Web.Mvc.xml
7767440B.bin
C90B51CA.bin
System.Web.RegularExpressions.xml
B6E517C5.bin
CD932B2B.bin
System.Web.Routing.3.5.0.0.Nullness.Generated.xml
71E5DC71.bin
System.Web.Routing.xml
54275CA2.bin
D75C6BD1.bin
System.Web.Services.2.0.0.0.Nullness.Generated.xml
5FB93F55.bin
System.Web.Services.4.0.0.0.Nullness.Generated.xml
30597093.bin
System.Web.Services.Attributes.xml
336EB089.bin
System.Web.Services.xml
057956D0.bin
357F9EBE.bin
System.Web.WebPages.Annotations.xml
E6592D12.bin
System.Web.WebPages.Attributes.xml
2AF04289.bin
System.Web.WebPages.xml
0190AFDD.bin
System.Web.xml
03E9D35E.bin
C4EB8CF0.bin
System.Windows.Forms.2.0.0.0.Contracts.xml
28E48E05.bin
System.Windows.Forms.2.0.0.0.Nullness.Generated.xml
4E922475.bin
System.Windows.Forms.2.0.0.0.Pure.xml
4A9E75B6.bin
System.Windows.Forms.4.0.0.0.Contracts.xml
0AA1AF83.bin
System.Windows.Forms.4.0.0.0.Nullness.Generated.xml
E30F52B3.bin
System.Windows.Forms.4.0.0.0.Pure.xml
FDE30D70.bin
System.Windows.Forms.I18n.xml
4286B6C8.bin
System.Windows.Forms.Manual.xml
4EEF7F3C.bin
System.Windows.Forms.xml
628A07B4.bin
82C195DA.bin
System.Workflow.Activities.4.0.0.0.Nullness.Generated.xml
95C13873.bin
System.Workflow.Activities.xml
FB17DE96.bin
System.Workflow.ComponentModel.4.0.0.0.Nullness.Generated.xml
43C7AB93.bin
System.Workflow.ComponentModel.xml
8A0F9E9D.bin
System.Workflow.Runtime.4.0.0.0.Nullness.Generated.xml
5F2A0F93.bin
System.Workflow.Runtime.xml
32431EC1.bin
System.WorkflowServices.4.0.0.0.Nullness.Generated.xml
DC2BE493.bin
System.WorkflowServices.xml
8E65A1DD.bin
System.Xaml.4.0.0.0.Nullness.Generated.xml
A8037753.bin
System.Xaml.Hosting.4.0.0.0.Nullness.Generated.xml
66496553.bin
System.Xaml.Hosting.xml
F261D856.bin
System.Xaml.xml
C4D1BFD8.bin
System.Xml.2.0.0.0.Contracts.xml
1CF390E5.bin
System.Xml.2.0.0.0.Nullness.Generated.xml
B911D315.bin
System.Xml.2.0.0.0.Pure.xml
BEB7E496.bin
System.Xml.4.0.0.0.Contracts.xml
53D95363.bin
System.Xml.4.0.0.0.Nullness.Generated.xml
DD97C153.bin
System.Xml.4.0.0.0.Pure.xml
5A1C7B50.bin
System.Xml.Attributes.xml
09EED2C9.bin
System.Xml.I18n.xml
8B551FA8.bin
System.Xml.Linq.3.5.0.0.Contracts.xml
927AA021.bin
System.Xml.Linq.3.5.0.0.Nullness.Generated.xml
D8E168D1.bin
System.Xml.Linq.3.5.0.0.Pure.xml
89D3BBD2.bin
System.Xml.Linq.4.0.0.0.Contracts.xml
0FA00AA3.bin
System.Xml.Linq.4.0.0.0.Nullness.Generated.xml
0EE20693.bin
System.Xml.Linq.4.0.0.0.Pure.xml
9C820F10.bin
System.Xml.Linq.I18n.xml
A5756368.bin
System.Xml.Linq.xml
AD7A27CD.bin
BA52F0DE.bin
System.Xml.xml
3B538D57.bin
48B5EA79.bin
System.xml
74BB9F68.bin
C3B3EEEE.bin
CA128980.bin
WindowsBase.3.0.0.0.Nullness.Generated.xml
04FEF8F4.bin
WindowsBase.3.0.0.0.Pure.xml
BC4535F7.bin
WindowsBase.xml
3DC9B440.bin
CodeFirstServices
Interfaces
Properties
Services
Dlls
MvcPortal
bin
Content
themes
base
images
ui-bg_flat_0_aaaaaa_40x100.png
ui-bg_flat_75_ffffff_40x100.png
ui-bg_glass_55_fbf9ee_1x400.png
ui-bg_glass_65_ffffff_1x400.png
ui-bg_glass_75_dadada_1x400.png
ui-bg_glass_75_e6e6e6_1x400.png
ui-bg_glass_95_fef1ec_1x400.png
ui-bg_highlight-soft_75_cccccc_1x100.png
ui-icons_222222_256x240.png
ui-icons_2e83ff_256x240.png
ui-icons_454545_256x240.png
ui-icons_888888_256x240.png
ui-icons_cd0a0a_256x240.png
Controllers
Global.asax
IoC
MvcPortal.csproj.user
Properties
Scripts
Views
Home
Shared
Student
SourceCode.zip
CodeFirstData
DBInteractions
EntityRepositories
Properties
CodeFirstEntities
CodeFirstEntities.suo
CodeFirstEntities
bin
Debug
CodeFirstEntities.dll
obj
Debug
CodeFirstEntities.dll
Properties
packages
EntityFramework.4.1.10331.0
EntityFramework.4.1.10331.0.nupkg
lib
EntityFramework.dll
jQuery.1.5.1
jQuery.1.5.1.nupkg
Content
Scripts
jQuery.UI.Combined.1.8.11
jQuery.UI.Combined.1.8.11.nupkg
Content
Content
themes
base
images
ui-bg_flat_0_aaaaaa_40x100.png
ui-bg_flat_75_ffffff_40x100.png
ui-bg_glass_55_fbf9ee_1x400.png
ui-bg_glass_65_ffffff_1x400.png
ui-bg_glass_75_dadada_1x400.png
ui-bg_glass_75_e6e6e6_1x400.png
ui-bg_glass_95_fef1ec_1x400.png
ui-bg_highlight-soft_75_cccccc_1x100.png
ui-icons_222222_256x240.png
ui-icons_2e83ff_256x240.png
ui-icons_454545_256x240.png
ui-icons_888888_256x240.png
ui-icons_cd0a0a_256x240.png
Scripts
jQuery.Validation.1.8.0
jQuery.Validation.1.8.0.nupkg
Content
Scripts
jQuery.vsdoc.1.5.1
jQuery.vsdoc.1.5.1.nupkg
Content
Scripts
Modernizr.1.7
Modernizr.1.7.nupkg
Content
Scripts
_ReSharper.CodeFirstEntities
AspFileDataCache.dat
PersistenIdIndex.bin
SymbolCache.bin
BuildScriptCache
.crc
.version
1
79c652.dat
CompletionStatistics
Statistics.dat
ConditionalNames
.crc
.version
4
3fddd5b7.dat
JavaScriptCache
.crc
.version
1
545da353.dat
61d4b734.dat
2
3245028f.dat
3
23ce8008.dat
4
3fddd5b7.dat
5
71112476.dat
7
3bd63.dat
8
69c2350.dat
JSTest
.crc
.version
7
337c7624.dat
MVC
.crc
.version
7
337c7624.dat
NamedArguments
.crc
.version
4
3fddd5b7.dat
RecentItems
RecentFiles.dat
Resources
.crc
.version
TagPrefixes
.crc
.version
1
79c652.dat
TodoItems
.crc
.version
4
3fddd5b7.dat
WebSymbols
.crc
.version
1
79c652.dat
WordIndex
.crc
.version
3
23ce8008.dat
525a768.dat
4
3fddd5b7.dat
7
278dea1d.dat
XmlIndex
Accessibility.xml
59F683E5.bin
97C5C74B.bin
EntityFramework.xml
6E572F9F.bin
EF3E2830.bin
Microsoft.Build.Framework.4.0.0.0.Nullness.Generated.xml
91BD6FD3.bin
Microsoft.Build.Framework.xml
5B4D04B5.bin
Microsoft.Build.Tasks.v4.0.4.0.0.0.Nullness.Generated.xml
AB623953.bin
Microsoft.Build.Tasks.v4.0.xml
390E8A25.bin
Microsoft.Build.Utilities.v4.0.4.0.0.0.Nullness.Generated.xml
07D57913.bin
Microsoft.Build.Utilities.v4.0.xml
1A2D939D.bin
Microsoft.CSharp.4.0.0.0.Nullness.Generated.xml
10F25633.bin
Microsoft.CSharp.xml
4DDA1CCA.bin
Microsoft.JScript.10.0.0.0.Nullness.Generated.xml
47DE7F86.bin
Microsoft.JScript.xml
F74F3354.bin
Microsoft.Practices.Unity.Configuration.xml
5AA51D65.bin
70886068.bin
Microsoft.Practices.Unity.Interception.Configuration.xml
209059E5.bin
4E009688.bin
Microsoft.Practices.Unity.Interception.xml
59AC76BB.bin
E837E3D6.bin
Microsoft.Practices.Unity.xml
ABA3AEF6.bin
CC291A3B.bin
Microsoft.Transactions.Bridge.3.0.0.0.Nullness.Generated.xml
C7619374.bin
Microsoft.Transactions.Bridge.4.0.0.0.Nullness.Generated.xml
CB57B7D3.bin
Microsoft.Transactions.Bridge.xml
196DF037.bin
Microsoft.VisualBasic.10.0.0.0.Contracts.xml
905D2256.bin
Microsoft.VisualBasic.10.0.0.0.Nullness.Generated.xml
34A06846.bin
Microsoft.VisualBasic.10.0.0.0.Pure.xml
90D5FE85.bin
Microsoft.VisualBasic.Activities.Compiler.10.0.0.0.Nullness.Generated.xml
276128C6.bin
Microsoft.VisualBasic.xml
EE79FEBF.bin
Microsoft.VisualC.xml
3732B488.bin
90D3ABE6.bin
mscorlib.2.0.0.0.Contracts.xml
2C2FE705.bin
mscorlib.2.0.0.0.Interfaces.Nullness.Generated.xml
C418674D.bin
mscorlib.2.0.0.0.Nullness.Generated.xml
E2B19D75.bin
mscorlib.2.0.0.0.Pure.xml
B22E2EB6.bin
mscorlib.4.0.0.0.Contracts.xml
0DED0883.bin
mscorlib.4.0.0.0.Interfaces.Nullness.Generated.xml
620DC5CB.bin
mscorlib.4.0.0.0.Nullness.Generated.xml
772ECBB3.bin
mscorlib.4.0.0.0.Pure.xml
6572C670.bin
mscorlib.I18n.xml
366D6FC8.bin
mscorlib.Nullness.Manual.xml
A029C282.bin
mscorlib.ValueFlow.xml
4E59B0BF.bin
mscorlib.xml
05998BE8.bin
1D362982.bin
743ADB6C.bin
SMDiagnostics.3.0.0.0.Nullness.Generated.xml
8AA32174.bin
SMDiagnostics.4.0.0.0.Nullness.Generated.xml
8E9945D3.bin
System.2.0.0.0.Contracts.xml
929BDA85.bin
System.2.0.0.0.Nullness.Generated.xml
BE8780F5.bin
System.2.0.0.0.Pure.xml
8CF3F236.bin
System.4.0.0.0.Contracts.xml
7458FC03.bin
System.4.0.0.0.Nullness.Generated.xml
5304AF33.bin
System.4.0.0.0.Pure.xml
403889F0.bin
System.Activities.4.0.0.0.Nullness.Generated.xml
679C2793.bin
System.Activities.DurableInstancing.4.0.0.0.Nullness.Generated.xml
5B8A77D3.bin
System.Activities.DurableInstancing.xml
04D57C40.bin
System.Activities.xml
33E2C3AB.bin
System.ComponentModel.DataAnnotations.3.5.0.0.Nullness.Generated.xml
B5111ED1.bin
System.ComponentModel.DataAnnotations.4.0.0.0.Nullness.Generated.xml
EB11BC93.bin
System.ComponentModel.DataAnnotations.I18n.xml
E1E89968.bin
System.ComponentModel.DataAnnotations.xml
13D34939.bin
B9A8C76A.bin
System.Configuration.2.0.0.0.Contracts.xml
93875E45.bin
System.Configuration.2.0.0.0.Nullness.Generated.xml
FB5BB8B5.bin
System.Configuration.2.0.0.0.Pure.xml
07AB3D76.bin
System.Configuration.4.0.0.0.Contracts.xml
8AA99CC3.bin
System.Configuration.4.0.0.0.Nullness.Generated.xml
5C04A9F3.bin
System.Configuration.4.0.0.0.Pure.xml
A30FD330.bin
System.Configuration.Install.2.0.0.0.Contracts.xml
BF2FCAE5.bin
System.Configuration.Install.2.0.0.0.Nullness.Generated.xml
03AF4D15.bin
System.Configuration.Install.4.0.0.0.Contracts.xml
F6158D63.bin
System.Configuration.Install.4.0.0.0.Nullness.Generated.xml
28353B53.bin
System.Configuration.Install.xml
3B89BCB1.bin
7FB1C71F.bin
System.Configuration.xml
092A1070.bin
2AA4525E.bin
System.Core.3.5.0.0.Contracts.xml
1D445C21.bin
System.Core.3.5.0.0.Nullness.Generated.xml
585EA4D1.bin
System.Core.3.5.0.0.Pure.xml
C497F7D2.bin
System.Core.4.0.0.0.Contracts.xml
9A69C6A3.bin
System.Core.4.0.0.0.Nullness.Generated.xml
8E5F4293.bin
System.Core.4.0.0.0.Pure.xml
D7464B10.bin
System.Core.LinqTunnel.xml
63F26974.bin
System.Core.Nullness.Manual.xml
31BDD0E2.bin
System.Core.xml
11686E5B.bin
944CB108.bin
System.Data.2.0.0.0.Contracts.xml
C6AE46A5.bin
System.Data.2.0.0.0.Nullness.Generated.xml
A9765ED5.bin
System.Data.2.0.0.0.Pure.xml
A61761D6.bin
System.Data.4.0.0.0.Contracts.xml
68A7E423.bin
System.Data.4.0.0.0.Nullness.Generated.xml
7A169013.bin
System.Data.4.0.0.0.Pure.xml
595BF890.bin
System.Data.DataSetExtensions.4.0.0.0.Nullness.Generated.xml
DB866913.bin
System.Data.DataSetExtensions.I18n.xml
B16CE5E8.bin
System.Data.DataSetExtensions.xml
4A8BA0A6.bin
System.Data.Entity.3.5.0.0.Nullness.Generated.xml
FAE5A5D1.bin
System.Data.Entity.4.0.0.0.Nullness.Generated.xml
30E64393.bin
System.Data.Entity.xml
9398E105.bin
EB528336.bin
System.Data.I18n.xml
51BDCCE8.bin
System.Data.Linq.3.5.0.0.Nullness.Generated.xml
3938B6B1.bin
System.Data.Linq.4.0.0.0.Nullness.Generated.xml
0D37D4F3.bin
System.Data.Linq.Attributes.xml
B77F6C29.bin
System.Data.Linq.I18n.xml
A25BD988.bin
System.Data.Linq.xml
34869A17.bin
B30DAF64.bin
System.Data.OracleClient.2.0.0.0.Nullness.Generated.xml
7754BD95.bin
System.Data.OracleClient.4.0.0.0.Nullness.Generated.xml
9BDAABD3.bin
System.Data.OracleClient.xml
27DDCE31.bin
9427B35F.bin
System.Data.Services.Client.3.5.0.0.Nullness.Generated.xml
2ADFF3D1.bin
System.Data.Services.Client.4.0.0.0.Nullness.Generated.xml
60E09193.bin
System.Data.Services.Client.xml
0B993FC7.bin
3CEE3C54.bin
System.Data.Services.Design.3.5.0.0.Nullness.Generated.xml
C417FF51.bin
System.Data.Services.Design.4.0.0.0.Nullness.Generated.xml
FA189D13.bin
System.Data.Services.Design.xml
CC0FCF1F.bin
E842CE0C.bin
System.Data.SqlXml.2.0.0.0.Nullness.Generated.xml
956E4495.bin
System.Data.SqlXml.4.0.0.0.Nullness.Generated.xml
B9F432D3.bin
System.Data.SqlXml.xml
48CF6F29.bin
8761C3C7.bin
System.Data.xml
7BF6DA70.bin
CFFAA41E.bin
System.Deployment.2.0.0.0.Nullness.Generated.xml
E0B9A455.bin
System.Deployment.4.0.0.0.Nullness.Generated.xml
B159D593.bin
System.Deployment.xml
2C6EE0D7.bin
CC017739.bin
System.Design.2.0.0.0.Nullness.Generated.xml
73443E95.bin
System.Design.4.0.0.0.Nullness.Generated.xml
97CA2CD3.bin
System.Design.xml
66D504B2.bin
94F2BB5C.bin
System.DirectoryServices.2.0.0.0.Nullness.Generated.xml
78AE4555.bin
System.DirectoryServices.4.0.0.0.Nullness.Generated.xml
494E7693.bin
System.DirectoryServices.Protocols.2.0.0.0.Nullness.Generated.xml
6EFB7AB5.bin
System.DirectoryServices.Protocols.4.0.0.0.Nullness.Generated.xml
CFA46BF3.bin
System.DirectoryServices.Protocols.xml
072F5742.bin
A1B5E32C.bin
System.DirectoryServices.xml
14397267.bin
796A6F49.bin
System.Drawing.2.0.0.0.Contracts.xml
AF2FFA85.bin
System.Drawing.2.0.0.0.Nullness.Generated.xml
93BFA0F5.bin
System.Drawing.2.0.0.0.Pure.xml
54741236.bin
System.Drawing.4.0.0.0.Contracts.xml
90ED1C03.bin
System.Drawing.4.0.0.0.Nullness.Generated.xml
283CCF33.bin
System.Drawing.4.0.0.0.Pure.xml
07B8A9F0.bin
System.Drawing.Design.2.0.0.0.Nullness.Generated.xml
CB20AA15.bin
System.Drawing.Design.4.0.0.0.Nullness.Generated.xml
EFA69853.bin
System.Drawing.Design.xml
7000BF52.bin
E232227C.bin
System.Drawing.xml
2F425360.bin
4AE71CCE.bin
System.Dynamic.4.0.0.0.Nullness.Generated.xml
8CC52453.bin
System.EnterpriseServices.2.0.0.0.Nullness.Generated.xml
F38E6055.bin
System.EnterpriseServices.4.0.0.0.Nullness.Generated.xml
C42E9193.bin
System.EnterpriseServices.xml
484CBB5B.bin
5D2D9EF5.bin
System.I18n.xml
E767B348.bin
System.IdentityModel.3.0.0.0.Nullness.Generated.xml
8D398F74.bin
System.IdentityModel.4.0.0.0.Nullness.Generated.xml
912FB3D3.bin
System.IdentityModel.Selectors.3.0.0.0.Nullness.Generated.xml
896B6974.bin
System.IdentityModel.Selectors.4.0.0.0.Nullness.Generated.xml
8D618DD3.bin
System.IdentityModel.Selectors.xml
17C23871.bin
8E1D2D30.bin
System.IdentityModel.xml
673E4F98.bin
FCECB5D9.bin
System.Management.4.0.0.0.Nullness.Generated.xml
3E6A0593.bin
System.Management.xml
8DDFA253.bin
System.Messaging.2.0.0.0.Nullness.Generated.xml
2C9BE975.bin
System.Messaging.4.0.0.0.Nullness.Generated.xml
C11917B3.bin
System.Messaging.xml
4EE26F6E.bin
94C73840.bin
System.Nullness.Manual.xml
AC02D602.bin
System.Numerics.4.0.0.0.Nullness.Generated.xml
0D729213.bin
System.Numerics.xml
F65D6778.bin
System.Runtime.Caching.4.0.0.0.Nullness.Generated.xml
8BB7FA53.bin
System.Runtime.Caching.xml
6E34C19B.bin
System.Runtime.DurableInstancing.4.0.0.0.Nullness.Generated.xml
94C6B993.bin
System.Runtime.Remoting.2.0.0.0.Nullness.Generated.xml
357DCF15.bin
System.Runtime.Remoting.4.0.0.0.Nullness.Generated.xml
5A03BD53.bin
System.Runtime.Remoting.xml
99D48EF3.bin
F93434DD.bin
System.Runtime.Serialization.3.0.0.0.Nullness.Generated.xml
65D50AD4.bin
System.Runtime.Serialization.4.0.0.0.Nullness.Generated.xml
4774B3B3.bin
System.Runtime.Serialization.Attributes.xml
E749FA69.bin
System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Contracts.xml
6A729305.bin
System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Nullness.Generated.xml
64B5C975.bin
System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Contracts.xml
4C2FB483.bin
System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Nullness.Generated.xml
F932F7B3.bin
System.Runtime.Serialization.Formatters.Soap.xml
AC344D82.bin
FD932A2C.bin
System.Runtime.Serialization.xml
014E8BDC.bin
F0B1191D.bin
System.Security.2.0.0.0.Contracts.xml
7E44A425.bin
System.Security.2.0.0.0.Nullness.Generated.xml
25CDEC55.bin
System.Security.2.0.0.0.Pure.xml
895D4F56.bin
System.Security.4.0.0.0.Contracts.xml
203E41A3.bin
System.Security.4.0.0.0.Nullness.Generated.xml
F66E1D93.bin
System.Security.4.0.0.0.Pure.xml
3CA1E610.bin
System.Security.xml
07099898.bin
55841E76.bin
System.ServiceModel.3.0.0.0.Nullness.Generated.xml
F3859074.bin
System.ServiceModel.4.0.0.0.Nullness.Generated.xml
F77BB4D3.bin
System.ServiceModel.Activation.4.0.0.0.Nullness.Generated.xml
98DDA2B3.bin
System.ServiceModel.Activation.xml
B91280C8.bin
System.ServiceModel.Activities.4.0.0.0.Nullness.Generated.xml
7FF57E53.bin
System.ServiceModel.Activities.xml
AB91D397.bin
System.ServiceModel.Web.3.5.0.0.Nullness.Generated.xml
B061E091.bin
System.ServiceModel.Web.4.0.0.0.Nullness.Generated.xml
3A483B53.bin
System.ServiceModel.Web.xml
4B4A489F.bin
AFCF614C.bin
System.ServiceModel.xml
263DB992.bin
BE8B8173.bin
System.ServiceProcess.2.0.0.0.Nullness.Generated.xml
64FAEAD5.bin
System.ServiceProcess.4.0.0.0.Nullness.Generated.xml
359B1C13.bin
System.ServiceProcess.xml
2335E116.bin
B46FDC38.bin
System.Transactions.2.0.0.0.Nullness.Generated.xml
68818E55.bin
System.Transactions.4.0.0.0.Nullness.Generated.xml
3921BF93.bin
System.Transactions.xml
7D351899.bin
A0E212F7.bin
System.Web.2.0.0.0.Contracts.xml
BAEFDF05.bin
System.Web.2.0.0.0.Nullness.Generated.xml
B4E89575.bin
System.Web.2.0.0.0.Pure.xml
931326B6.bin
System.Web.4.0.0.0.Contracts.xml
9CAD0083.bin
System.Web.4.0.0.0.Nullness.Generated.xml
4965C3B3.bin
System.Web.4.0.0.0.Pure.xml
4657BE70.bin
System.Web.Abstractions.3.5.0.0.Nullness.Generated.xml
06EACF11.bin
System.Web.Abstractions.xml
A00BB8E5.bin
CCA4F1B6.bin
System.Web.ApplicationServices.4.0.0.0.Nullness.Generated.xml
3969B1B3.bin
System.Web.ApplicationServices.xml
331D36EA.bin
System.Web.Attributes.xml
C91B0A69.bin
System.Web.DataVisualization.4.0.0.0.Nullness.Generated.xml
01959F33.bin
System.Web.DataVisualization.xml
8800EDF4.bin
System.Web.DynamicData.4.0.0.0.Nullness.Generated.xml
EB87AD13.bin
System.Web.DynamicData.xml
DC2CFBFB.bin
System.Web.Entity.4.0.0.0.Nullness.Generated.xml
F4A1E313.bin
System.Web.Entity.xml
A8FBC385.bin
System.Web.Extensions.3.5.0.0.Nullness.Generated.xml
E9EAAC91.bin
System.Web.Extensions.4.0.0.0.Nullness.Generated.xml
73D10753.bin
System.Web.Extensions.xml
1594D3F4.bin
F1886C67.bin
System.Web.Helpers.xml
0E774D98.bin
System.Web.I18n.xml
DDDA67C8.bin
System.Web.Mvc.Annotations.xml
B5228072.bin
System.Web.Mvc.Attributes.xml
A9871169.bin
System.Web.Mvc.I18n.xml
3B8D2EC8.bin
System.Web.Mvc.Nullness.Manual.xml
66942182.bin
System.Web.Mvc.xml
7767440B.bin
C90B51CA.bin
System.Web.RegularExpressions.xml
B6E517C5.bin
CD932B2B.bin
System.Web.Routing.3.5.0.0.Nullness.Generated.xml
71E5DC71.bin
System.Web.Routing.xml
54275CA2.bin
D75C6BD1.bin
System.Web.Services.2.0.0.0.Nullness.Generated.xml
5FB93F55.bin
System.Web.Services.4.0.0.0.Nullness.Generated.xml
30597093.bin
System.Web.Services.Attributes.xml
336EB089.bin
System.Web.Services.xml
057956D0.bin
357F9EBE.bin
System.Web.WebPages.Annotations.xml
E6592D12.bin
System.Web.WebPages.Attributes.xml
2AF04289.bin
System.Web.WebPages.xml
0190AFDD.bin
System.Web.xml
03E9D35E.bin
C4EB8CF0.bin
System.Windows.Forms.2.0.0.0.Contracts.xml
28E48E05.bin
System.Windows.Forms.2.0.0.0.Nullness.Generated.xml
4E922475.bin
System.Windows.Forms.2.0.0.0.Pure.xml
4A9E75B6.bin
System.Windows.Forms.4.0.0.0.Contracts.xml
0AA1AF83.bin
System.Windows.Forms.4.0.0.0.Nullness.Generated.xml
E30F52B3.bin
System.Windows.Forms.4.0.0.0.Pure.xml
FDE30D70.bin
System.Windows.Forms.I18n.xml
4286B6C8.bin
System.Windows.Forms.Manual.xml
4EEF7F3C.bin
System.Windows.Forms.xml
628A07B4.bin
82C195DA.bin
System.Workflow.Activities.4.0.0.0.Nullness.Generated.xml
95C13873.bin
System.Workflow.Activities.xml
FB17DE96.bin
System.Workflow.ComponentModel.4.0.0.0.Nullness.Generated.xml
43C7AB93.bin
System.Workflow.ComponentModel.xml
8A0F9E9D.bin
System.Workflow.Runtime.4.0.0.0.Nullness.Generated.xml
5F2A0F93.bin
System.Workflow.Runtime.xml
32431EC1.bin
System.WorkflowServices.4.0.0.0.Nullness.Generated.xml
DC2BE493.bin
System.WorkflowServices.xml
8E65A1DD.bin
System.Xaml.4.0.0.0.Nullness.Generated.xml
A8037753.bin
System.Xaml.Hosting.4.0.0.0.Nullness.Generated.xml
66496553.bin
System.Xaml.Hosting.xml
F261D856.bin
System.Xaml.xml
C4D1BFD8.bin
System.xml
74BB9F68.bin
C3B3EEEE.bin
CA128980.bin
System.Xml.2.0.0.0.Contracts.xml
1CF390E5.bin
System.Xml.2.0.0.0.Nullness.Generated.xml
B911D315.bin
System.Xml.2.0.0.0.Pure.xml
BEB7E496.bin
System.Xml.4.0.0.0.Contracts.xml
53D95363.bin
System.Xml.4.0.0.0.Nullness.Generated.xml
DD97C153.bin
System.Xml.4.0.0.0.Pure.xml
5A1C7B50.bin
System.Xml.Attributes.xml
09EED2C9.bin
System.Xml.I18n.xml
8B551FA8.bin
System.Xml.Linq.3.5.0.0.Contracts.xml
927AA021.bin
System.Xml.Linq.3.5.0.0.Nullness.Generated.xml
D8E168D1.bin
System.Xml.Linq.3.5.0.0.Pure.xml
89D3BBD2.bin
System.Xml.Linq.4.0.0.0.Contracts.xml
0FA00AA3.bin
System.Xml.Linq.4.0.0.0.Nullness.Generated.xml
0EE20693.bin
System.Xml.Linq.4.0.0.0.Pure.xml
9C820F10.bin
System.Xml.Linq.I18n.xml
A5756368.bin
System.Xml.Linq.xml
AD7A27CD.bin
BA52F0DE.bin
System.Xml.xml
3B538D57.bin
48B5EA79.bin
WindowsBase.3.0.0.0.Nullness.Generated.xml
04FEF8F4.bin
WindowsBase.3.0.0.0.Pure.xml
BC4535F7.bin
WindowsBase.xml
3DC9B440.bin
CodeFirstServices
bin
Debug
CodeFirstServices.dll
Interfaces
Properties
Services
Dlls
CodeFirstData.dll
CodeFirstEntities.dll
CodeFirstPortal.dll
CodeFirstServices.dll
EntityFramework.dll
Microsoft.Practices.ServiceLocation.dll
Microsoft.Practices.Unity.Configuration.dll
Microsoft.Practices.Unity.dll
Microsoft.Practices.Unity.Interception.Configuration.dll
Microsoft.Practices.Unity.Interception.dll
Microsoft.Web.Mvc.dll
WebActivator.dll
MvcPortal
Global.asax
MvcPortal.csproj.user
bin
CodeFirstData.dll
CodeFirstEntities.dll
CodeFirstServices.dll
EntityFramework.dll
Microsoft.Practices.ServiceLocation.dll
Microsoft.Practices.Unity.dll
MvcPortal.dll
Content
themes
base
images
ui-bg_flat_0_aaaaaa_40x100.png
ui-bg_flat_75_ffffff_40x100.png
ui-bg_glass_55_fbf9ee_1x400.png
ui-bg_glass_65_ffffff_1x400.png
ui-bg_glass_75_dadada_1x400.png
ui-bg_glass_75_e6e6e6_1x400.png
ui-bg_glass_95_fef1ec_1x400.png
ui-bg_highlight-soft_75_cccccc_1x100.png
ui-icons_222222_256x240.png
ui-icons_2e83ff_256x240.png
ui-icons_454545_256x240.png
ui-icons_888888_256x240.png
ui-icons_cd0a0a_256x240.png
Controllers
IoC
Properties
Scripts
Views
Home
Shared
Student
/*!
* Note: While Microsoft is not the author of this file, Microsoft is
* offering you a license subject to the terms of the Microsoft Software
* License Terms for Microsoft ASP.NET Model View Controller 3.
* Microsoft reserves all other rights. The notices below are provided
* for informational purposes only and are not the license terms under
* which Microsoft distributed this file.
*
* Modernizr v1.7
* http://www.modernizr.com
*
* Developed by: 
* - Faruk Ates  http://farukat.es/
* - Paul Irish  http://paulirish.com/
*
* Copyright (c) 2009-2011
*/

 
/*
 * Modernizr is a script that detects native CSS3 and HTML5 features
 * available in the current UA and provides an object containing all
 * features with a true/false value, depending on whether the UA has
 * native support for it or not.
 * 
 * Modernizr will also add classes to the <html> element of the page,
 * one for each feature it detects. If the UA supports it, a class
 * like "cssgradients" will be added. If not, the class name will be
 * "no-cssgradients". This allows for simple if-conditionals in your
 * CSS, giving you fine control over the look & feel of your website.
 * 
 * @author        Faruk Ates
 * @author        Paul Irish
 * @copyright     (c) 2009-2011 Faruk Ates.
 * @contributor   Ben Alman
 */

window.Modernizr = (function(window,document,undefined){
    
    var version = '1.7',

    ret = {},

    /**
     * !! DEPRECATED !!
     * 
     * enableHTML5 is a private property for advanced use only. If enabled,
     * it will make Modernizr.init() run through a brief while() loop in
     * which it will create all HTML5 elements in the DOM to allow for
     * styling them in Internet Explorer, which does not recognize any
     * non-HTML4 elements unless created in the DOM this way.
     * 
     * enableHTML5 is ON by default.
     * 
     * The enableHTML5 toggle option is DEPRECATED as per 1.6, and will be
     * replaced in 2.0 in lieu of the modular, configurable nature of 2.0.
     */
    enableHTML5 = true,
    
    
    docElement = document.documentElement,
    docHead = document.head || document.getElementsByTagName('head')[0],

    /**
     * Create our "modernizr" element that we do most feature tests on.
     */
    mod = 'modernizr',
    modElem = document.createElement( mod ),
    m_style = modElem.style,

    /**
     * Create the input element for various Web Forms feature tests.
     */
    inputElem = document.createElement( 'input' ),
    
    smile = ':)',
    
    tostring = Object.prototype.toString,
    
    // List of property values to set for css tests. See ticket #21
    prefixes = ' -webkit- -moz- -o- -ms- -khtml- '.split(' '),

    // Following spec is to expose vendor-specific style properties as:
    //   elem.style.WebkitBorderRadius
    // and the following would be incorrect:
    //   elem.style.webkitBorderRadius
    
    // Webkit ghosts their properties in lowercase but Opera & Moz do not.
    // Microsoft foregoes prefixes entirely <= IE8, but appears to 
    //   use a lowercase `ms` instead of the correct `Ms` in IE9
    
    // More here: http://github.com/Modernizr/Modernizr/issues/issue/21
    domPrefixes = 'Webkit Moz O ms Khtml'.split(' '),

    ns = {'svg': 'http://www.w3.org/2000/svg'},

    tests = {},
    inputs = {},
    attrs = {},
    
    classes = [],
    
    featurename, // used in testing loop
    
    
    
    // todo: consider using http://javascript.nwbox.com/CSSSupport/css-support.js instead
    testMediaQuery = function(mq){

      var st = document.createElement('style'),
          div = document.createElement('div'),
          ret;

      st.textContent = mq + '{#modernizr{height:3px}}';
      docHead.appendChild(st);
      div.id = 'modernizr';
      docElement.appendChild(div);

      ret = div.offsetHeight === 3;

      st.parentNode.removeChild(st);
      div.parentNode.removeChild(div);

      return !!ret;

    },
    
    
    /**
      * isEventSupported determines if a given element supports the given event
      * function from http://yura.thinkweb2.com/isEventSupported/
      */
    isEventSupported = (function(){

      var TAGNAMES = {
        'select':'input','change':'input',
        'submit':'form','reset':'form',
        'error':'img','load':'img','abort':'img'
      };

      function isEventSupported(eventName, element) {

        element = element || document.createElement(TAGNAMES[eventName] || 'div');
        eventName = 'on' + eventName;

        // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
        var isSupported = (eventName in element);

        if (!isSupported) {
          // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
          if (!element.setAttribute) {
            element = document.createElement('div');
          }
          if (element.setAttribute && element.removeAttribute) {
            element.setAttribute(eventName, '');
            isSupported = is(element[eventName], 'function');

            // If property was created, "remove it" (by setting value to `undefined`)
            if (!is(element[eventName], undefined)) {
              element[eventName] = undefined;
            }
            element.removeAttribute(eventName);
          }
        }

        element = null;
        return isSupported;
      }
      return isEventSupported;
    })();
    
    
    // hasOwnProperty shim by kangax needed for Safari 2.0 support
    var _hasOwnProperty = ({}).hasOwnProperty, hasOwnProperty;
    if (!is(_hasOwnProperty, undefined) && !is(_hasOwnProperty.call, undefined)) {
      hasOwnProperty = function (object, property) {
        return _hasOwnProperty.call(object, property);
      };
    }
    else {
      hasOwnProperty = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
        return ((property in object) && is(object.constructor.prototype[property], undefined));
      };
    }
    
    /**
     * set_css applies given styles to the Modernizr DOM node.
     */
    function set_css( str ) {
        m_style.cssText = str;
    }

    /**
     * set_css_all extrapolates all vendor-specific css strings.
     */
    function set_css_all( str1, str2 ) {
        return set_css(prefixes.join(str1 + ';') + ( str2 || '' ));
    }

    /**
     * is returns a boolean for if typeof obj is exactly type.
     */
    function is( obj, type ) {
        return typeof obj === type;
    }

    /**
     * contains returns a boolean for if substr is found within str.
     */
    function contains( str, substr ) {
        return (''+str).indexOf( substr ) !== -1;
    }

    /**
     * test_props is a generic CSS / DOM property test; if a browser supports
     *   a certain property, it won't return undefined for it.
     *   A supported CSS property returns empty string when its not yet set.
     */
    function test_props( props, callback ) {
        for ( var i in props ) {
            if ( m_style[ props[i] ] !== undefined && ( !callback || callback( props[i], modElem ) ) ) {
                return true;
            }
        }
    }

    /**
     * test_props_all tests a list of DOM properties we want to check against.
     *   We specify literally ALL possible (known and/or likely) properties on 
     *   the element including the non-vendor prefixed one, for forward-
     *   compatibility.
     */
    function test_props_all( prop, callback ) {
      
        var uc_prop = prop.charAt(0).toUpperCase() + prop.substr(1),
            props   = (prop + ' ' + domPrefixes.join(uc_prop + ' ') + uc_prop).split(' ');

        return !!test_props( props, callback );
    }
    

    /**
     * Tests
     * -----
     */

    tests['flexbox'] = function() {
        /**
         * set_prefixed_value_css sets the property of a specified element
         * adding vendor prefixes to the VALUE of the property.
         * @param {Element} element
         * @param {string} property The property name. This will not be prefixed.
         * @param {string} value The value of the property. This WILL be prefixed.
         * @param {string=} extra Additional CSS to append unmodified to the end of
         * the CSS string.
         */
        function set_prefixed_value_css(element, property, value, extra) {
            property += ':';
            element.style.cssText = (property + prefixes.join(value + ';' + property)).slice(0, -property.length) + (extra || '');
        }

        /**
         * set_prefixed_property_css sets the property of a specified element
         * adding vendor prefixes to the NAME of the property.
         * @param {Element} element
         * @param {string} property The property name. This WILL be prefixed.
         * @param {string} value The value of the property. This will not be prefixed.
         * @param {string=} extra Additional CSS to append unmodified to the end of
         * the CSS string.
         */
        function set_prefixed_property_css(element, property, value, extra) {
            element.style.cssText = prefixes.join(property + ':' + value + ';') + (extra || '');
        }

        var c = document.createElement('div'),
            elem = document.createElement('div');

        set_prefixed_value_css(c, 'display', 'box', 'width:42px;padding:0;');
        set_prefixed_property_css(elem, 'box-flex', '1', 'width:10px;');

        c.appendChild(elem);
        docElement.appendChild(c);

        var ret = elem.offsetWidth === 42;

        c.removeChild(elem);
        docElement.removeChild(c);

        return ret;
    };
    
    // On the S60 and BB Storm, getContext exists, but always returns undefined
    // http://github.com/Modernizr/Modernizr/issues/issue/97/ 
    
    tests['canvas'] = function() {
        var elem = document.createElement( 'canvas' );
        return !!(elem.getContext && elem.getContext('2d'));
    };
    
    tests['canvastext'] = function() {
        return !!(ret['canvas'] && is(document.createElement( 'canvas' ).getContext('2d').fillText, 'function'));
    };
    
    // This WebGL test false positives in FF depending on graphics hardware. But really it's quite impossible to know
    // wether webgl will succeed until after you create the context. You might have hardware that can support
    // a 100x100 webgl canvas, but will not support a 1000x1000 webgl canvas. So this feature inference is weak, 
    // but intentionally so.
    tests['webgl'] = function(){
        return !!window.WebGLRenderingContext;
    };
    
    /*
     * The Modernizr.touch test only indicates if the browser supports
     *    touch events, which does not necessarily reflect a touchscreen
     *    device, as evidenced by tablets running Windows 7 or, alas,
     *    the Palm Pre / WebOS (touch) phones.
     *    
     * Additionally, Chrome (desktop) used to lie about its support on this,
     *    but that has since been rectified: http://crbug.com/36415
     *    
     * We also test for Firefox 4 Multitouch Support.
     *
     * For more info, see: http://modernizr.github.com/Modernizr/touch.html
     */
     
    tests['touch'] = function() {

        return ('ontouchstart' in window) || testMediaQuery('@media ('+prefixes.join('touch-enabled),(')+'modernizr)');

    };


    /**
     * geolocation tests for the new Geolocation API specification.
     *   This test is a standards compliant-only test; for more complete
     *   testing, including a Google Gears fallback, please see:
     *   http://code.google.com/p/geo-location-javascript/
     * or view a fallback solution using google's geo API:
     *   http://gist.github.com/366184
     */
    tests['geolocation'] = function() {
        return !!navigator.geolocation;
    };

    // Per 1.6: 
    // This used to be Modernizr.crosswindowmessaging but the longer
    // name has been deprecated in favor of a shorter and property-matching one.
    // The old API is still available in 1.6, but as of 2.0 will throw a warning,
    // and in the first release thereafter disappear entirely.
    tests['postmessage'] = function() {
      return !!window.postMessage;
    };

    // Web SQL database detection is tricky:

    // In chrome incognito mode, openDatabase is truthy, but using it will 
    //   throw an exception: http://crbug.com/42380
    // We can create a dummy database, but there is no way to delete it afterwards. 
    
    // Meanwhile, Safari users can get prompted on any database creation.
    //   If they do, any page with Modernizr will give them a prompt:
    //   http://github.com/Modernizr/Modernizr/issues/closed#issue/113
    
    // We have chosen to allow the Chrome incognito false positive, so that Modernizr
    //   doesn't litter the web with these test databases. As a developer, you'll have
    //   to account for this gotcha yourself.
    tests['websqldatabase'] = function() {
      var result = !!window.openDatabase;
      /*  if (result){
            try {
              result = !!openDatabase( mod + "testdb", "1.0", mod + "testdb", 2e4);
            } catch(e) {
            }
          }  */
      return result;
    };
    
    // Vendors have inconsistent prefixing with the experimental Indexed DB:
    // - Firefox is shipping indexedDB in FF4 as moz_indexedDB
    // - Webkit's implementation is accessible through webkitIndexedDB
    // We test both styles.
    tests['indexedDB'] = function(){
      for (var i = -1, len = domPrefixes.length; ++i < len; ){ 
        var prefix = domPrefixes[i].toLowerCase();
        if (window[prefix + '_indexedDB'] || window[prefix + 'IndexedDB']){
          return true;
        } 
      }
      return false;
    };

    // documentMode logic from YUI to filter out IE8 Compat Mode
    //   which false positives.
    tests['hashchange'] = function() {
      return isEventSupported('hashchange', window) && ( document.documentMode === undefined || document.documentMode > 7 );
    };

    // Per 1.6: 
    // This used to be Modernizr.historymanagement but the longer
    // name has been deprecated in favor of a shorter and property-matching one.
    // The old API is still available in 1.6, but as of 2.0 will throw a warning,
    // and in the first release thereafter disappear entirely.
    tests['history'] = function() {
      return !!(window.history && history.pushState);
    };

    tests['draganddrop'] = function() {
        return isEventSupported('dragstart') && isEventSupported('drop');
    };
    
    tests['websockets'] = function(){
        return ('WebSocket' in window);
    };
    
    
    // http://css-tricks.com/rgba-browser-support/
    tests['rgba'] = function() {
        // Set an rgba() color and check the returned value
        
        set_css(  'background-color:rgba(150,255,150,.5)' );
        
        return contains( m_style.backgroundColor, 'rgba' );
    };
    
    tests['hsla'] = function() {
        // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
        //   except IE9 who retains it as hsla
        
        set_css('background-color:hsla(120,40%,100%,.5)' );
        
        return contains( m_style.backgroundColor, 'rgba' ) || contains( m_style.backgroundColor, 'hsla' );
    };
    
    tests['multiplebgs'] = function() {
        // Setting multiple images AND a color on the background shorthand property
        //  and then querying the style.background property value for the number of
        //  occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
        
        set_css( 'background:url(//:),url(//:),red url(//:)' );
        
        // If the UA supports multiple backgrounds, there should be three occurrences
        //   of the string "url(" in the return value for elem_style.background

        return new RegExp("(url\\s*\\(.*?){3}").test(m_style.background);
    };
    
    
    // In testing support for a given CSS property, it's legit to test:
    //    `elem.style[styleName] !== undefined`
    // If the property is supported it will return an empty string,
    // if unsupported it will return undefined.
    
    // We'll take advantage of this quick test and skip setting a style 
    // on our modernizr element, but instead just testing undefined vs
    // empty string.
    

    tests['backgroundsize'] = function() {
        return test_props_all( 'backgroundSize' );
    };
    
    tests['borderimage'] = function() {
        return test_props_all( 'borderImage' );
    };
    
    
    // Super comprehensive table about all the unique implementations of 
    // border-radius: http://muddledramblings.com/table-of-css3-border-radius-compliance
    
    tests['borderradius'] = function() {
        return test_props_all( 'borderRadius', '', function( prop ) {
            return contains( prop, 'orderRadius' );
        });
    };
    
    // WebOS unfortunately false positives on this test.
    tests['boxshadow'] = function() {
        return test_props_all( 'boxShadow' );
    };
    
    // FF3.0 will false positive on this test 
    tests['textshadow'] = function(){
        return document.createElement('div').style.textShadow === '';
    };
    
    
    tests['opacity'] = function() {
        // Browsers that actually have CSS Opacity implemented have done so
        //  according to spec, which means their return values are within the
        //  range of [0.0,1.0] - including the leading zero.
        
        set_css_all( 'opacity:.55' );
        
        // The non-literal . in this regex is intentional:
        //   German Chrome returns this value as 0,55
        // https://github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
        return /^0.55$/.test(m_style.opacity);
    };
    
    
    tests['cssanimations'] = function() {
        return test_props_all( 'animationName' );
    };
    
    
    tests['csscolumns'] = function() {
        return test_props_all( 'columnCount' );
    };
    
    
    tests['cssgradients'] = function() {
        /**
         * For CSS Gradients syntax, please see:
         * http://webkit.org/blog/175/introducing-css-gradients/
         * https://developer.mozilla.org/en/CSS/-moz-linear-gradient
         * https://developer.mozilla.org/en/CSS/-moz-radial-gradient
         * http://dev.w3.org/csswg/css3-images/#gradients-
         */
        
        var str1 = 'background-image:',
            str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
            str3 = 'linear-gradient(left top,#9f9, white);';
        
        set_css(
            (str1 + prefixes.join(str2 + str1) + prefixes.join(str3 + str1)).slice(0,-str1.length)
        );
        
        return contains( m_style.backgroundImage, 'gradient' );
    };
    
    
    tests['cssreflections'] = function() {
        return test_props_all( 'boxReflect' );
    };
    
    
    tests['csstransforms'] = function() {
        return !!test_props([ 'transformProperty', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ]);
    };
    
    
    tests['csstransforms3d'] = function() {
        
        var ret = !!test_props([ 'perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective' ]);
        
        // Webkit’s 3D transforms are passed off to the browser's own graphics renderer.
        //   It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
        //   some conditions. As a result, Webkit typically recognizes the syntax but 
        //   will sometimes throw a false positive, thus we must do a more thorough check:
        if (ret && 'webkitPerspective' in docElement.style){
          
          // Webkit allows this media query to succeed only if the feature is enabled.    
          // `@media (transform-3d),(-o-transform-3d),(-moz-transform-3d),(-ms-transform-3d),(-webkit-transform-3d),(modernizr){ ... }`    
          ret = testMediaQuery('@media ('+prefixes.join('transform-3d),(')+'modernizr)');
        }
        return ret;
    };
    
    
    tests['csstransitions'] = function() {
        return test_props_all( 'transitionProperty' );
    };


    // @font-face detection routine by Diego Perini
    // http://javascript.nwbox.com/CSSSupport/
    tests['fontface'] = function(){

        var 
        sheet, bool,
        head = docHead || docElement,
        style = document.createElement("style"),
        impl = document.implementation || { hasFeature: function() { return false; } };
        
        style.type = 'text/css';
        head.insertBefore(style, head.firstChild);
        sheet = style.sheet || style.styleSheet;

        var supportAtRule = impl.hasFeature('CSS2', '') ?
                function(rule) {
                    if (!(sheet && rule)) return false;
                    var result = false;
                    try {
                        sheet.insertRule(rule, 0);
                        result = (/src/i).test(sheet.cssRules[0].cssText);
                        sheet.deleteRule(sheet.cssRules.length - 1);
                    } catch(e) { }
                    return result;
                } :
                function(rule) {
                    if (!(sheet && rule)) return false;
                    sheet.cssText = rule;
                    
                    return sheet.cssText.length !== 0 && (/src/i).test(sheet.cssText) &&
                      sheet.cssText
                            .replace(/\r+|\n+/g, '')
                            .indexOf(rule.split(' ')[0]) === 0;
                };
        
        bool = supportAtRule('@font-face { font-family: "font"; src: url(data:,); }');
        head.removeChild(style);
        return bool;
    };
    

    // These tests evaluate support of the video/audio elements, as well as
    // testing what types of content they support.
    //
    // We're using the Boolean constructor here, so that we can extend the value
    // e.g.  Modernizr.video     // true
    //       Modernizr.video.ogg // 'probably'
    //
    // Codec values from : http://github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
    //                     thx to NielsLeenheer and zcorpan
    
    // Note: in FF 3.5.1 and 3.5.0, "no" was a return value instead of empty string.
    //   Modernizr does not normalize for that.
    
    tests['video'] = function() {
        var elem = document.createElement('video'),
            bool = !!elem.canPlayType;
        
        if (bool){  
            bool      = new Boolean(bool);  
            bool.ogg  = elem.canPlayType('video/ogg; codecs="theora"');
            
            // Workaround required for IE9, which doesn't report video support without audio codec specified.
            //   bug 599718 @ msft connect
            var h264 = 'video/mp4; codecs="avc1.42E01E';
            bool.h264 = elem.canPlayType(h264 + '"') || elem.canPlayType(h264 + ', mp4a.40.2"');
            
            bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"');
        }
        return bool;
    };
    
    tests['audio'] = function() {
        var elem = document.createElement('audio'),
            bool = !!elem.canPlayType;
        
        if (bool){  
            bool      = new Boolean(bool);  
            bool.ogg  = elem.canPlayType('audio/ogg; codecs="vorbis"');
            bool.mp3  = elem.canPlayType('audio/mpeg;');
            
            // Mimetypes accepted: 
            //   https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
            //   http://bit.ly/iphoneoscodecs
            bool.wav  = elem.canPlayType('audio/wav; codecs="1"');
            bool.m4a  = elem.canPlayType('audio/x-m4a;') || elem.canPlayType('audio/aac;');
        }
        return bool;
    };


    // Firefox has made these tests rather unfun.

    // In FF4, if disabled, window.localStorage should === null.

    // Normally, we could not test that directly and need to do a 
    //   `('localStorage' in window) && ` test first because otherwise Firefox will
    //   throw http://bugzil.la/365772 if cookies are disabled

    // However, in Firefox 4 betas, if dom.storage.enabled == false, just mentioning
    //   the property will throw an exception. http://bugzil.la/599479
    // This looks to be fixed for FF4 Final.

    // Because we are forced to try/catch this, we'll go aggressive.

    // FWIW: IE8 Compat mode supports these features completely:
    //   http://www.quirksmode.org/dom/html5.html
    // But IE8 doesn't support either with local files

    tests['localstorage'] = function() {
        try {
            return !!localStorage.getItem;
        } catch(e) {
            return false;
        }
    };

    tests['sessionstorage'] = function() {
        try {
            return !!sessionStorage.getItem;
        } catch(e){
            return false;
        }
    };


    tests['webWorkers'] = function () {
        return !!window.Worker;
    };


    tests['applicationcache'] =  function() {
        return !!window.applicationCache;
    };

 
    // Thanks to Erik Dahlstrom
    tests['svg'] = function(){
        return !!document.createElementNS && !!document.createElementNS(ns.svg, "svg").createSVGRect;
    };

    tests['inlinesvg'] = function() {
      var div = document.createElement('div');
      div.innerHTML = '<svg/>';
      return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
    };

    // Thanks to F1lt3r and lucideer
    // http://github.com/Modernizr/Modernizr/issues#issue/35
    tests['smil'] = function(){
        return !!document.createElementNS && /SVG/.test(tostring.call(document.createElementNS(ns.svg,'animate')));
    };

    tests['svgclippaths'] = function(){
        // Possibly returns a false positive in Safari 3.2?
        return !!document.createElementNS && /SVG/.test(tostring.call(document.createElementNS(ns.svg,'clipPath')));
    };


    // input features and input types go directly onto the ret object, bypassing the tests loop.
    // Hold this guy to execute in a moment.
    function webforms(){
    
        // Run through HTML5's new input attributes to see if the UA understands any.
        // We're using f which is the <input> element created early on
        // Mike Taylr has created a comprehensive resource for testing these attributes
        //   when applied to all input types: 
        //   http://miketaylr.com/code/input-type-attr.html
        // spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
        ret['input'] = (function(props) {
            for (var i = 0, len = props.length; i<len; i++) {
                attrs[ props[i] ] = !!(props[i] in inputElem);
            }
            return attrs;
        })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));

        // Run through HTML5's new input types to see if the UA understands any.
        //   This is put behind the tests runloop because it doesn't return a
        //   true/false like all the other tests; instead, it returns an object
        //   containing each input type with its corresponding true/false value 
        
        // Big thanks to @miketaylr for the html5 forms expertise. http://miketaylr.com/
        ret['inputtypes'] = (function(props) {
          
            for (var i = 0, bool, inputElemType, defaultView, len=props.length; i < len; i++) {
              
                inputElem.setAttribute('type', inputElemType = props[i]);
                bool = inputElem.type !== 'text';
                
                // We first check to see if the type we give it sticks.. 
                // If the type does, we feed it a textual value, which shouldn't be valid.
                // If the value doesn't stick, we know there's input sanitization which infers a custom UI
                if (bool){  
                  
                    inputElem.value         = smile;
                    inputElem.style.cssText = 'position:absolute;visibility:hidden;';
     
                    if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined){
                      
                      docElement.appendChild(inputElem);
                      defaultView = document.defaultView;
                      
                      // Safari 2-4 allows the smiley as a value, despite making a slider
                      bool =  defaultView.getComputedStyle && 
                              defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&                  
                              // Mobile android web browser has false positive, so must
                              // check the height to see if the widget is actually there.
                              (inputElem.offsetHeight !== 0);
                              
                      docElement.removeChild(inputElem);
                              
                    } else if (/^(search|tel)$/.test(inputElemType)){
                      // Spec doesnt define any special parsing or detectable UI 
                      //   behaviors so we pass these through as true
                      
                      // Interestingly, opera fails the earlier test, so it doesn't
                      //  even make it here.
                      
                    } else if (/^(url|email)$/.test(inputElemType)) {
                      // Real url and email support comes with prebaked validation.
                      bool = inputElem.checkValidity && inputElem.checkValidity() === false;
                      
                    } else if (/^color$/.test(inputElemType)) {
                        // chuck into DOM and force reflow for Opera bug in 11.00
                        // github.com/Modernizr/Modernizr/issues#issue/159
                        docElement.appendChild(inputElem);
                        docElement.offsetWidth; 
                        bool = inputElem.value != smile;
                        docElement.removeChild(inputElem);

                    } else {
                      // If the upgraded input compontent rejects the :) text, we got a winner
                      bool = inputElem.value != smile;
                    }
                }
                
                inputs[ props[i] ] = !!bool;
            }
            return inputs;
        })('search tel url email datetime date month week time datetime-local number range color'.split(' '));

    }



    // End of test definitions
    // -----------------------



    // Run through all tests and detect their support in the current UA.
    // todo: hypothetically we could be doing an array of tests and use a basic loop here.
    for ( var feature in tests ) {
        if ( hasOwnProperty( tests, feature ) ) {
            // run the test, throw the return value into the Modernizr,
            //   then based on that boolean, define an appropriate className
            //   and push it into an array of classes we'll join later.
            featurename  = feature.toLowerCase();
            ret[ featurename ] = tests[ feature ]();

            classes.push( ( ret[ featurename ] ? '' : 'no-' ) + featurename );
        }
    }
    
    // input tests need to run.
    if (!ret.input) webforms();
    

   
    // Per 1.6: deprecated API is still accesible for now:
    ret.crosswindowmessaging = ret.postmessage;
    ret.historymanagement = ret.history;



    /**
     * Addtest allows the user to define their own feature tests
     * the result will be added onto the Modernizr object,
     * as well as an appropriate className set on the html element
     * 
     * @param feature - String naming the feature
     * @param test - Function returning true if feature is supported, false if not
     */
    ret.addTest = function (feature, test) {
      feature = feature.toLowerCase();
      
      if (ret[ feature ]) {
        return; // quit if you're trying to overwrite an existing test
      } 
      test = !!(test());
      docElement.className += ' ' + (test ? '' : 'no-') + feature; 
      ret[ feature ] = test;
      return ret; // allow chaining.
    };

    /**
     * Reset m.style.cssText to nothing to reduce memory footprint.
     */
    set_css( '' );
    modElem = inputElem = null;

    //>>BEGIN IEPP
    // Enable HTML 5 elements for styling in IE. 
    // fyi: jscript version does not reflect trident version
    //      therefore ie9 in ie7 mode will still have a jScript v.9
    if ( enableHTML5 && window.attachEvent && (function(){ var elem = document.createElement("div");
                                      elem.innerHTML = "<elem></elem>";
                                      return elem.childNodes.length !== 1; })()) {
        // iepp v1.6.2 by @jon_neal : code.google.com/p/ie-print-protector
        (function(win, doc) {
          var elems = 'abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video',
            elemsArr = elems.split('|'),
            elemsArrLen = elemsArr.length,
            elemRegExp = new RegExp('(^|\\s)('+elems+')', 'gi'), 
            tagRegExp = new RegExp('<(\/*)('+elems+')', 'gi'),
            ruleRegExp = new RegExp('(^|[^\\n]*?\\s)('+elems+')([^\\n]*)({[\\n\\w\\W]*?})', 'gi'),
            docFrag = doc.createDocumentFragment(),
            html = doc.documentElement,
            head = html.firstChild,
            bodyElem = doc.createElement('body'),
            styleElem = doc.createElement('style'),
            body;
          function shim(doc) {
            var a = -1;
            while (++a < elemsArrLen)
              // Use createElement so IE allows HTML5-named elements in a document
              doc.createElement(elemsArr[a]);
          }
          function getCSS(styleSheetList, mediaType) {
            var a = -1,
              len = styleSheetList.length,
              styleSheet,
              cssTextArr = [];
            while (++a < len) {
              styleSheet = styleSheetList[a];
              // Get css from all non-screen stylesheets and their imports
              if ((mediaType = styleSheet.media || mediaType) != 'screen') cssTextArr.push(getCSS(styleSheet.imports, mediaType), styleSheet.cssText);
            }
            return cssTextArr.join('');
          }
          // Shim the document and iepp fragment
          shim(doc);
          shim(docFrag);
          // Add iepp custom print style element
          head.insertBefore(styleElem, head.firstChild);
          styleElem.media = 'print';
          win.attachEvent(
            'onbeforeprint',
            function() {
              var a = -1,
                cssText = getCSS(doc.styleSheets, 'all'),
                cssTextArr = [],
                rule;
              body = body || doc.body;
              // Get only rules which reference HTML5 elements by name
              while ((rule = ruleRegExp.exec(cssText)) != null)
                // Replace all html5 element references with iepp substitute classnames
                cssTextArr.push((rule[1]+rule[2]+rule[3]).replace(elemRegExp, '$1.iepp_$2')+rule[4]);
              // Write iepp custom print CSS
              styleElem.styleSheet.cssText = cssTextArr.join('\n');
              while (++a < elemsArrLen) {
                var nodeList = doc.getElementsByTagName(elemsArr[a]),
                  nodeListLen = nodeList.length,
                  b = -1;
                while (++b < nodeListLen)
                  if (nodeList[b].className.indexOf('iepp_') < 0)
                    // Append iepp substitute classnames to all html5 elements
                    nodeList[b].className += ' iepp_'+elemsArr[a];
              }
              docFrag.appendChild(body);
              html.appendChild(bodyElem);
              // Write iepp substitute print-safe document
              bodyElem.className = body.className;
              // Replace HTML5 elements with <font> which is print-safe and shouldn't conflict since it isn't part of html5
              bodyElem.innerHTML = body.innerHTML.replace(tagRegExp, '<$1font');
            }
          );
          win.attachEvent(
            'onafterprint',
            function() {
              // Undo everything done in onbeforeprint
              bodyElem.innerHTML = '';
              html.removeChild(bodyElem);
              html.appendChild(body);
              styleElem.styleSheet.cssText = '';
            }
          );
        })(window, document);
    }
    //>>END IEPP

    // Assign private properties to the return object with prefix
    ret._enableHTML5     = enableHTML5;
    ret._version         = version;

    // Remove "no-js" class from <html> element, if it exists:
    docElement.className = docElement.className.replace(/\bno-js\b/,'') 
                            + ' js '

                            // Add the new classes to the <html> element.
                            + classes.join( ' ' );
    
    return ret;

})(this,this.document);

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Akhil Mittal
Technical Lead
India India
I am a C# Corner MVP,a Code project MVP,author,blogger and currently working as an Analyst in an MNC and have an experience of more than 7 years in C#.Net. I am a B.Tech in Computer Science and hold a diploma in Information Security and Application Development. My work experience includes Development of Enterprise Applications using C#,.Net and Sql Server,Analysis as well as Research and Development. I am a MCP in Web Applications(MCTS-70-528,MCTS-70-515) and .Net Framework 2.0 (MCTS-70-536). Please visit my blog A Practical Approach for more informative articles.
____________________________________________________________________________________________________________________
 
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 16 August 2013.
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 28 August 2013.
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 08 Sept 2013.
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 29 Sept 2013.
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 29 Oct 2013.
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 21 May 2014.
Article of the Day on Microsoft's site http://www.asp.net/community/articles on 19 July 2014.
Member of the month for July 2013 on C# Corner
Month Winner for July 2013 on C# Corner
http://www.c-sharpcorner.com/News/3067/july-2013-month-winners-announced.aspx
Month Winner for May 2014 on C# Corner
http://www.c-sharpcorner.com/News/3798/may-2014-month-winners-announced.aspx
Group type: Collaborative Group

203 members

Follow on   Twitter   Google+   LinkedIn

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.150327.1 | Last Updated 27 Nov 2014
Article Copyright 2013 by Akhil Mittal
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid