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

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

, 27 Aug 2014
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
/*
* This file has been commented to support Visual Studio Intellisense.
* You should not use this file at runtime inside the browser--it is only
* intended to be used only for design-time IntelliSense.  Please use the
* standard jQuery library for all production use.
*
* Comment version: 1.8
*/

/*
* 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.
*
* jQuery validation plugin 1.8.0
*
* http://bassistance.de/jquery-plugins/jquery-plugin-validation/
* http://docs.jquery.com/Plugins/Validation
*
* Copyright (c) 2006 - 2011 Jörn Zaefferer
*
*/

(function($) {

$.extend($.fn, {
	// http://docs.jquery.com/Plugins/Validation/validate
	validate: function( options ) {
		/// <summary>
		/// Validates the selected form. This method sets up event handlers for submit, focus,
		/// keyup, blur and click to trigger validation of the entire form or individual
		/// elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout,
		/// onkeyup, onclick). focusInvalid focuses elements when submitting a invalid form.
		/// </summary>
		/// <param name="options" type="Options">
		/// A set of key/value pairs that configure the validate. All options are optional.
		/// </param>
		/// <returns type="Validator" />

		// if nothing is selected, return nothing; can't chain anyway
		if (!this.length) {
			options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
			return;
		}

		// check if a validator for this form was already created
		var validator = $.data(this[0], 'validator');
		if ( validator ) {
			return validator;
		}
		
		validator = new $.validator( options, this[0] );
		$.data(this[0], 'validator', validator); 
		
		if ( validator.settings.onsubmit ) {
		
			// allow suppresing validation by adding a cancel class to the submit button
			this.find("input, button").filter(".cancel").click(function() {
				validator.cancelSubmit = true;
			});
			
			// when a submitHandler is used, capture the submitting button
			if (validator.settings.submitHandler) {
				this.find("input, button").filter(":submit").click(function() {
					validator.submitButton = this;
				});
			}
		
			// validate the form on submit
			this.submit( function( event ) {
				if ( validator.settings.debug )
					// prevent form submit to be able to see console output
					event.preventDefault();
					
				function handle() {
					if ( validator.settings.submitHandler ) {
						if (validator.submitButton) {
							// insert a hidden input as a replacement for the missing submit button
							var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
						}
						validator.settings.submitHandler.call( validator, validator.currentForm );
						if (validator.submitButton) {
							// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
							hidden.remove();
						}
						return false;
					}
					return true;
				}
					
				// prevent submit for invalid forms or custom submit handlers
				if ( validator.cancelSubmit ) {
					validator.cancelSubmit = false;
					return handle();
				}
				if ( validator.form() ) {
					if ( validator.pendingRequest ) {
						validator.formSubmitted = true;
						return false;
					}
					return handle();
				} else {
					validator.focusInvalid();
					return false;
				}
			});
		}
		
		return validator;
	},
	// http://docs.jquery.com/Plugins/Validation/valid
	valid: function() {
		/// <summary>
		/// Checks if the selected form is valid or if all selected elements are valid.
		/// validate() needs to be called on the form before checking it using this method.
		/// </summary>
		/// <returns type="Boolean" />

        if ( $(this[0]).is('form')) {
            return this.validate().form();
        } else {
            var valid = true;
            var validator = $(this[0].form).validate();
            this.each(function() {
				valid &= validator.element(this);
            });
            return valid;
        }
    },
	// attributes: space seperated list of attributes to retrieve and remove
	removeAttrs: function(attributes) {
		/// <summary>
		/// Remove the specified attributes from the first matched element and return them.
		/// </summary>
		/// <param name="attributes" type="String">
		/// A space-seperated list of attribute names to remove.
		/// </param>
		/// <returns type="" />

		var result = {},
			$element = this;
		$.each(attributes.split(/\s/), function(index, value) {
			result[value] = $element.attr(value);
			$element.removeAttr(value);
		});
		return result;
	},
	// http://docs.jquery.com/Plugins/Validation/rules
	rules: function(command, argument) {
		/// <summary>
		/// Return the validations rules for the first selected element.
		/// </summary>
		/// <param name="command" type="String">
		/// Can be either "add" or "remove".
		/// </param>
		/// <param name="argument" type="">
		/// A list of rules to add or remove.
		/// </param>
		/// <returns type="" />

		var element = this[0];
		
		if (command) {
			var settings = $.data(element.form, 'validator').settings;
			var staticRules = settings.rules;
			var existingRules = $.validator.staticRules(element);
			switch(command) {
			case "add":
				$.extend(existingRules, $.validator.normalizeRule(argument));
				staticRules[element.name] = existingRules;
				if (argument.messages)
					settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
				break;
			case "remove":
				if (!argument) {
					delete staticRules[element.name];
					return existingRules;
				}
				var filtered = {};
				$.each(argument.split(/\s/), function(index, method) {
					filtered[method] = existingRules[method];
					delete existingRules[method];
				});
				return filtered;
			}
		}
		
		var data = $.validator.normalizeRules(
		$.extend(
			{},
			$.validator.metadataRules(element),
			$.validator.classRules(element),
			$.validator.attributeRules(element),
			$.validator.staticRules(element)
		), element);
		
		// make sure required is at front
		if (data.required) {
			var param = data.required;
			delete data.required;
			data = $.extend({required: param}, data);
		}
		
		return data;
	}
});

// Custom selectors
$.extend($.expr[":"], {
	// http://docs.jquery.com/Plugins/Validation/blank
	blank: function(a) {return !$.trim("" + a.value);},
	// http://docs.jquery.com/Plugins/Validation/filled
	filled: function(a) {return !!$.trim("" + a.value);},
	// http://docs.jquery.com/Plugins/Validation/unchecked
	unchecked: function(a) {return !a.checked;}
});

// constructor for validator
$.validator = function( options, form ) {
	this.settings = $.extend( true, {}, $.validator.defaults, options );
	this.currentForm = form;
	this.init();
};

$.validator.format = function(source, params) {
	/// <summary>
	/// Replaces {n} placeholders with arguments.
	/// One or more arguments can be passed, in addition to the string template itself, to insert
	/// into the string.
	/// </summary>
	/// <param name="source" type="String">
	/// The string to format.
	/// </param>
	/// <param name="params" type="String">
	/// The first argument to insert, or an array of Strings to insert
	/// </param>
	/// <returns type="String" />

	if ( arguments.length == 1 ) 
		return function() {
			var args = $.makeArray(arguments);
			args.unshift(source);
			return $.validator.format.apply( this, args );
		};
	if ( arguments.length > 2 && params.constructor != Array  ) {
		params = $.makeArray(arguments).slice(1);
	}
	if ( params.constructor != Array ) {
		params = [ params ];
	}
	$.each(params, function(i, n) {
		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
	});
	return source;
};

$.extend($.validator, {
	
	defaults: {
		messages: {},
		groups: {},
		rules: {},
		errorClass: "error",
		validClass: "valid",
		errorElement: "label",
		focusInvalid: true,
		errorContainer: $( [] ),
		errorLabelContainer: $( [] ),
		onsubmit: true,
		ignore: [],
		ignoreTitle: false,
		onfocusin: function(element) {
			this.lastActive = element;
				
			// hide error label and remove error class on focus if enabled
			if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
				this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
				this.addWrapper(this.errorsFor(element)).hide();
			}
		},
		onfocusout: function(element) {
			if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
				this.element(element);
			}
		},
		onkeyup: function(element) {
			if ( element.name in this.submitted || element == this.lastElement ) {
				this.element(element);
			}
		},
		onclick: function(element) {
			// click on selects, radiobuttons and checkboxes
			if ( element.name in this.submitted )
				this.element(element);
			// or option elements, check parent select in that case
			else if (element.parentNode.name in this.submitted)
				this.element(element.parentNode);
		},
		highlight: function( element, errorClass, validClass ) {
			$(element).addClass(errorClass).removeClass(validClass);
		},
		unhighlight: function( element, errorClass, validClass ) {
			$(element).removeClass(errorClass).addClass(validClass);
		}
	},

	// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
	setDefaults: function(settings) {
		/// <summary>
		/// Modify default settings for validation.
		/// Accepts everything that Plugins/Validation/validate accepts.
		/// </summary>
		/// <param name="settings" type="Options">
		/// Options to set as default.
		/// </param>
		/// <returns type="undefined" />

		$.extend( $.validator.defaults, settings );
	},

	messages: {
		required: "This field is required.",
		remote: "Please fix this field.",
		email: "Please enter a valid email address.",
		url: "Please enter a valid URL.",
		date: "Please enter a valid date.",
		dateISO: "Please enter a valid date (ISO).",
		number: "Please enter a valid number.",
		digits: "Please enter only digits.",
		creditcard: "Please enter a valid credit card number.",
		equalTo: "Please enter the same value again.",
		accept: "Please enter a value with a valid extension.",
		maxlength: $.validator.format("Please enter no more than {0} characters."),
		minlength: $.validator.format("Please enter at least {0} characters."),
		rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
		range: $.validator.format("Please enter a value between {0} and {1}."),
		max: $.validator.format("Please enter a value less than or equal to {0}."),
		min: $.validator.format("Please enter a value greater than or equal to {0}.")
	},
	
	autoCreateRanges: false,
	
	prototype: {
		
		init: function() {
			this.labelContainer = $(this.settings.errorLabelContainer);
			this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
			this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
			this.submitted = {};
			this.valueCache = {};
			this.pendingRequest = 0;
			this.pending = {};
			this.invalid = {};
			this.reset();
			
			var groups = (this.groups = {});
			$.each(this.settings.groups, function(key, value) {
				$.each(value.split(/\s/), function(index, name) {
					groups[name] = key;
				});
			});
			var rules = this.settings.rules;
			$.each(rules, function(key, value) {
				rules[key] = $.validator.normalizeRule(value);
			});
			
			function delegate(event) {
				var validator = $.data(this[0].form, "validator"),
					eventType = "on" + event.type.replace(/^validate/, "");
				validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
			}
			$(this.currentForm)
				.validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
				.validateDelegate(":radio, :checkbox, select, option", "click", delegate);

			if (this.settings.invalidHandler)
				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
		},

		// http://docs.jquery.com/Plugins/Validation/Validator/form
		form: function() {
			/// <summary>
			/// Validates the form, returns true if it is valid, false otherwise.
			/// This behaves as a normal submit event, but returns the result.
			/// </summary>
			/// <returns type="Boolean" />

			this.checkForm();
			$.extend(this.submitted, this.errorMap);
			this.invalid = $.extend({}, this.errorMap);
			if (!this.valid())
				$(this.currentForm).triggerHandler("invalid-form", [this]);
			this.showErrors();
			return this.valid();
		},
		
		checkForm: function() {
			this.prepareForm();
			for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
				this.check( elements[i] );
			}
			return this.valid(); 
		},
		
		// http://docs.jquery.com/Plugins/Validation/Validator/element
		element: function( element ) {
			/// <summary>
			/// Validates a single element, returns true if it is valid, false otherwise.
			/// This behaves as validation on blur or keyup, but returns the result.
			/// </summary>
			/// <param name="element" type="Selector">
			/// An element to validate, must be inside the validated form.
			/// </param>
			/// <returns type="Boolean" />

			element = this.clean( element );
			this.lastElement = element;
			this.prepareElement( element );
			this.currentElements = $(element);
			var result = this.check( element );
			if ( result ) {
				delete this.invalid[element.name];
			} else {
				this.invalid[element.name] = true;
			}
			if ( !this.numberOfInvalids() ) {
				// Hide error containers on last error
				this.toHide = this.toHide.add( this.containers );
			}
			this.showErrors();
			return result;
		},

		// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
		showErrors: function(errors) {
			/// <summary>
			/// Show the specified messages.
			/// Keys have to refer to the names of elements, values are displayed for those elements, using the configured error placement.
			/// </summary>
			/// <param name="errors" type="Object">
			/// One or more key/value pairs of input names and messages.
			/// </param>
			/// <returns type="undefined" />

			if(errors) {
				// add items to error list and map
				$.extend( this.errorMap, errors );
				this.errorList = [];
				for ( var name in errors ) {
					this.errorList.push({
						message: errors[name],
						element: this.findByName(name)[0]
					});
				}
				// remove items from success list
				this.successList = $.grep( this.successList, function(element) {
					return !(element.name in errors);
				});
			}
			this.settings.showErrors
				? this.settings.showErrors.call( this, this.errorMap, this.errorList )
				: this.defaultShowErrors();
		},
		
		// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
		resetForm: function() {
			/// <summary>
			/// Resets the controlled form.
			/// Resets input fields to their original value (requires form plugin), removes classes
			/// indicating invalid elements and hides error messages.
			/// </summary>
			/// <returns type="undefined" />

			if ( $.fn.resetForm )
				$( this.currentForm ).resetForm();
			this.submitted = {};
			this.prepareForm();
			this.hideErrors();
			this.elements().removeClass( this.settings.errorClass );
		},
		
		numberOfInvalids: function() {
			/// <summary>
			/// Returns the number of invalid fields.
			/// This depends on the internal validator state. It covers all fields only after
			/// validating the complete form (on submit or via $("form").valid()). After validating
			/// a single element, only that element is counted. Most useful in combination with the
			/// invalidHandler-option.
			/// </summary>
			/// <returns type="Number" />

			return this.objectLength(this.invalid);
		},
		
		objectLength: function( obj ) {
			var count = 0;
			for ( var i in obj )
				count++;
			return count;
		},
		
		hideErrors: function() {
			this.addWrapper( this.toHide ).hide();
		},
		
		valid: function() {
			return this.size() == 0;
		},
		
		size: function() {
			return this.errorList.length;
		},
		
		focusInvalid: function() {
			if( this.settings.focusInvalid ) {
				try {
					$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
					.filter(":visible")
					.focus()
					// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
					.trigger("focusin");
				} catch(e) {
					// ignore IE throwing errors when focusing hidden elements
				}
			}
		},
		
		findLastActive: function() {
			var lastActive = this.lastActive;
			return lastActive && $.grep(this.errorList, function(n) {
				return n.element.name == lastActive.name;
			}).length == 1 && lastActive;
		},
		
		elements: function() {
			var validator = this,
				rulesCache = {};
			
			// select all valid inputs inside the form (no submit or reset buttons)
			// workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
			return $([]).add(this.currentForm.elements)
			.filter(":input")
			.not(":submit, :reset, :image, [disabled]")
			.not( this.settings.ignore )
			.filter(function() {
				!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
			
				// select only the first element for each name, and only those with rules specified
				if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
					return false;
				
				rulesCache[this.name] = true;
				return true;
			});
		},
		
		clean: function( selector ) {
			return $( selector )[0];
		},
		
		errors: function() {
			return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
		},
		
		reset: function() {
			this.successList = [];
			this.errorList = [];
			this.errorMap = {};
			this.toShow = $([]);
			this.toHide = $([]);
			this.currentElements = $([]);
		},
		
		prepareForm: function() {
			this.reset();
			this.toHide = this.errors().add( this.containers );
		},
		
		prepareElement: function( element ) {
			this.reset();
			this.toHide = this.errorsFor(element);
		},
	
		check: function( element ) {
			element = this.clean( element );
			
			// if radio/checkbox, validate first element in group instead
			if (this.checkable(element)) {
			    element = this.findByName(element.name).not(this.settings.ignore)[0];
			}
			
			var rules = $(element).rules();
			var dependencyMismatch = false;
			for (var method in rules) {
				var rule = { method: method, parameters: rules[method] };
				try {
					var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
					
					// if a method indicates that the field is optional and therefore valid,
					// don't mark it as valid when there are no other rules
					if ( result == "dependency-mismatch" ) {
						dependencyMismatch = true;
						continue;
					}
					dependencyMismatch = false;
					
					if ( result == "pending" ) {
						this.toHide = this.toHide.not( this.errorsFor(element) );
						return;
					}
					
					if( !result ) {
						this.formatAndAdd( element, rule );
						return false;
					}
				} catch(e) {
					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
						 + ", check the '" + rule.method + "' method", e);
					throw e;
				}
			}
			if (dependencyMismatch)
				return;
			if ( this.objectLength(rules) )
				this.successList.push(element);
			return true;
		},
		
		// return the custom message for the given element and validation method
		// specified in the element's "messages" metadata
		customMetaMessage: function(element, method) {
			if (!$.metadata)
				return;
			
			var meta = this.settings.meta
				? $(element).metadata()[this.settings.meta]
				: $(element).metadata();
			
			return meta && meta.messages && meta.messages[method];
		},
		
		// return the custom message for the given element name and validation method
		customMessage: function( name, method ) {
			var m = this.settings.messages[name];
			return m && (m.constructor == String
				? m
				: m[method]);
		},
		
		// return the first defined argument, allowing empty strings
		findDefined: function() {
			for(var i = 0; i < arguments.length; i++) {
				if (arguments[i] !== undefined)
					return arguments[i];
			}
			return undefined;
		},
		
		defaultMessage: function( element, method) {
			return this.findDefined(
				this.customMessage( element.name, method ),
				this.customMetaMessage( element, method ),
				// title is never undefined, so handle empty string as undefined
				!this.settings.ignoreTitle && element.title || undefined,
				$.validator.messages[method],
				"<strong>Warning: No message defined for " + element.name + "</strong>"
			);
		},
		
		formatAndAdd: function( element, rule ) {
			var message = this.defaultMessage( element, rule.method ),
				theregex = /\$?\{(\d+)\}/g;
			if ( typeof message == "function" ) {
				message = message.call(this, rule.parameters, element);
			} else if (theregex.test(message)) {
				message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
			}			
			this.errorList.push({
				message: message,
				element: element
			});
			
			this.errorMap[element.name] = message;
			this.submitted[element.name] = message;
		},
		
		addWrapper: function(toToggle) {
			if ( this.settings.wrapper )
				toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
			return toToggle;
		},
		
		defaultShowErrors: function() {
			for ( var i = 0; this.errorList[i]; i++ ) {
				var error = this.errorList[i];
				this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
				this.showLabel( error.element, error.message );
			}
			if( this.errorList.length ) {
				this.toShow = this.toShow.add( this.containers );
			}
			if (this.settings.success) {
				for ( var i = 0; this.successList[i]; i++ ) {
					this.showLabel( this.successList[i] );
				}
			}
			if (this.settings.unhighlight) {
				for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
					this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
				}
			}
			this.toHide = this.toHide.not( this.toShow );
			this.hideErrors();
			this.addWrapper( this.toShow ).show();
		},
		
		validElements: function() {
			return this.currentElements.not(this.invalidElements());
		},
		
		invalidElements: function() {
			return $(this.errorList).map(function() {
				return this.element;
			});
		},
		
		showLabel: function(element, message) {
			var label = this.errorsFor( element );
			if ( label.length ) {
				// refresh error/success class
				label.removeClass().addClass( this.settings.errorClass );
			
				// check if we have a generated label, replace the message then
				label.attr("generated") && label.html(message);
			} else {
				// create label
				label = $("<" + this.settings.errorElement + "/>")
					.attr({"for":  this.idOrName(element), generated: true})
					.addClass(this.settings.errorClass)
					.html(message || "");
				if ( this.settings.wrapper ) {
					// make sure the element is visible, even in IE
					// actually showing the wrapped element is handled elsewhere
					label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
				}
				if ( !this.labelContainer.append(label).length )
					this.settings.errorPlacement
						? this.settings.errorPlacement(label, $(element) )
						: label.insertAfter(element);
			}
			if ( !message && this.settings.success ) {
				label.text("");
				typeof this.settings.success == "string"
					? label.addClass( this.settings.success )
					: this.settings.success( label );
			}
			this.toShow = this.toShow.add(label);
		},
		
		errorsFor: function(element) {
			var name = this.idOrName(element);
    		return this.errors().filter(function() {
				return $(this).attr('for') == name;
			});
		},
		
		idOrName: function(element) {
			return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
		},

		checkable: function( element ) {
			return /radio|checkbox/i.test(element.type);
		},
		
		findByName: function( name ) {
			// select by name and filter by form for performance over form.find("[name=...]")
			var form = this.currentForm;
			return $(document.getElementsByName(name)).map(function(index, element) {
				return element.form == form && element.name == name && element  || null;
			});
		},
		
		getLength: function(value, element) {
			switch( element.nodeName.toLowerCase() ) {
			case 'select':
				return $("option:selected", element).length;
			case 'input':
				if( this.checkable( element) )
					return this.findByName(element.name).filter(':checked').length;
			}
			return value.length;
		},
	
		depend: function(param, element) {
			return this.dependTypes[typeof param]
				? this.dependTypes[typeof param](param, element)
				: true;
		},
	
		dependTypes: {
			"boolean": function(param, element) {
				return param;
			},
			"string": function(param, element) {
				return !!$(param, element.form).length;
			},
			"function": function(param, element) {
				return param(element);
			}
		},
		
		optional: function(element) {
			return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
		},
		
		startRequest: function(element) {
			if (!this.pending[element.name]) {
				this.pendingRequest++;
				this.pending[element.name] = true;
			}
		},
		
		stopRequest: function(element, valid) {
			this.pendingRequest--;
			// sometimes synchronization fails, make sure pendingRequest is never < 0
			if (this.pendingRequest < 0)
				this.pendingRequest = 0;
			delete this.pending[element.name];
			if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
				$(this.currentForm).submit();
				this.formSubmitted = false;
			} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
				$(this.currentForm).triggerHandler("invalid-form", [this]);
				this.formSubmitted = false;
			}
		},
		
		previousValue: function(element) {
			return $.data(element, "previousValue") || $.data(element, "previousValue", {
				old: null,
				valid: true,
				message: this.defaultMessage( element, "remote" )
			});
		}
		
	},
	
	classRuleSettings: {
		required: {required: true},
		email: {email: true},
		url: {url: true},
		date: {date: true},
		dateISO: {dateISO: true},
		dateDE: {dateDE: true},
		number: {number: true},
		numberDE: {numberDE: true},
		digits: {digits: true},
		creditcard: {creditcard: true}
	},
	
	addClassRules: function(className, rules) {
		/// <summary>
		/// Add a compound class method - useful to refactor common combinations of rules into a single
		/// class.
		/// </summary>
		/// <param name="name" type="String">
		/// The name of the class rule to add
		/// </param>
		/// <param name="rules" type="Options">
		/// The compound rules
		/// </param>
		/// <returns type="undefined" />

		className.constructor == String ?
			this.classRuleSettings[className] = rules :
			$.extend(this.classRuleSettings, className);
	},
	
	classRules: function(element) {
		var rules = {};
		var classes = $(element).attr('class');
		classes && $.each(classes.split(' '), function() {
			if (this in $.validator.classRuleSettings) {
				$.extend(rules, $.validator.classRuleSettings[this]);
			}
		});
		return rules;
	},
	
	attributeRules: function(element) {
		var rules = {};
		var $element = $(element);

		for (var method in $.validator.methods) {
			var value = $element.attr(method);
			if (value) {
				rules[method] = value;
			}
		}
		
		// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
		if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
			delete rules.maxlength;
		}
		
		return rules;
	},
	
	metadataRules: function(element) {
		if (!$.metadata) return {};
		
		var meta = $.data(element.form, 'validator').settings.meta;
		return meta ?
			$(element).metadata()[meta] :
			$(element).metadata();
	},
	
	staticRules: function(element) {
		var rules = {};
		var validator = $.data(element.form, 'validator');
		if (validator.settings.rules) {
			rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
		}
		return rules;
	},
	
	normalizeRules: function(rules, element) {
		// handle dependency check
		$.each(rules, function(prop, val) {
			// ignore rule when param is explicitly false, eg. required:false
			if (val === false) {
				delete rules[prop];
				return;
			}
			if (val.param || val.depends) {
				var keepRule = true;
				switch (typeof val.depends) {
					case "string":
						keepRule = !!$(val.depends, element.form).length;
						break;
					case "function":
						keepRule = val.depends.call(element, element);
						break;
				}
				if (keepRule) {
					rules[prop] = val.param !== undefined ? val.param : true;
				} else {
					delete rules[prop];
				}
			}
		});
		
		// evaluate parameters
		$.each(rules, function(rule, parameter) {
			rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
		});
		
		// clean number parameters
		$.each(['minlength', 'maxlength', 'min', 'max'], function() {
			if (rules[this]) {
				rules[this] = Number(rules[this]);
			}
		});
		$.each(['rangelength', 'range'], function() {
			if (rules[this]) {
				rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
			}
		});
		
		if ($.validator.autoCreateRanges) {
			// auto-create ranges
			if (rules.min && rules.max) {
				rules.range = [rules.min, rules.max];
				delete rules.min;
				delete rules.max;
			}
			if (rules.minlength && rules.maxlength) {
				rules.rangelength = [rules.minlength, rules.maxlength];
				delete rules.minlength;
				delete rules.maxlength;
			}
		}
		
		// To support custom messages in metadata ignore rule methods titled "messages"
		if (rules.messages) {
			delete rules.messages;
		}
		
		return rules;
	},
	
	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
	normalizeRule: function(data) {
		if( typeof data == "string" ) {
			var transformed = {};
			$.each(data.split(/\s/), function() {
				transformed[this] = true;
			});
			data = transformed;
		}
		return data;
	},
	
	// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
	addMethod: function(name, method, message) {
		/// <summary>
		/// Add a custom validation method. It must consist of a name (must be a legal javascript 
		/// identifier), a javascript based function and a default string message.
		/// </summary>
		/// <param name="name" type="String">
		/// The name of the method, used to identify and referencing it, must be a valid javascript
		/// identifier
		/// </param>
		/// <param name="method" type="Function">
		/// The actual method implementation, returning true if an element is valid
		/// </param>
		/// <param name="message" type="String" optional="true">
		/// (Optional) The default message to display for this method. Can be a function created by 
		/// jQuery.validator.format(value). When undefined, an already existing message is used 
		/// (handy for localization), otherwise the field-specific messages have to be defined.
		/// </param>
		/// <returns type="undefined" />

		$.validator.methods[name] = method;
		$.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
		if (method.length < 3) {
			$.validator.addClassRules(name, $.validator.normalizeRule(name));
		}
	},

	methods: {

		// http://docs.jquery.com/Plugins/Validation/Methods/required
		required: function(value, element, param) {
			// check if dependency is met
			if ( !this.depend(param, element) )
				return "dependency-mismatch";
			switch( element.nodeName.toLowerCase() ) {
			case 'select':
				// could be an array for select-multiple or a string, both are fine this way
				var val = $(element).val();
				return val && val.length > 0;
			case 'input':
				if ( this.checkable(element) )
					return this.getLength(value, element) > 0;
			default:
				return $.trim(value).length > 0;
			}
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/remote
		remote: function(value, element, param) {
			if ( this.optional(element) )
				return "dependency-mismatch";
			
			var previous = this.previousValue(element);
			if (!this.settings.messages[element.name] )
				this.settings.messages[element.name] = {};
			previous.originalMessage = this.settings.messages[element.name].remote;
			this.settings.messages[element.name].remote = previous.message;
			
			param = typeof param == "string" && {url:param} || param; 
			
			if ( this.pending[element.name] ) {
				return "pending";
			}
			if ( previous.old === value ) {
				return previous.valid;
			}

			previous.old = value;
			var validator = this;
			this.startRequest(element);
			var data = {};
			data[element.name] = value;
			$.ajax($.extend(true, {
				url: param,
				mode: "abort",
				port: "validate" + element.name,
				dataType: "json",
				data: data,
				success: function(response) {
					validator.settings.messages[element.name].remote = previous.originalMessage;
					var valid = response === true;
					if ( valid ) {
						var submitted = validator.formSubmitted;
						validator.prepareElement(element);
						validator.formSubmitted = submitted;
						validator.successList.push(element);
						validator.showErrors();
					} else {
						var errors = {};
						var message = response || validator.defaultMessage(element, "remote");
						errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
						validator.showErrors(errors);
					}
					previous.valid = valid;
					validator.stopRequest(element, valid);
				}
			}, param));
			return "pending";
		},

		// http://docs.jquery.com/Plugins/Validation/Methods/minlength
		minlength: function(value, element, param) {
			return this.optional(element) || this.getLength($.trim(value), element) >= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
		maxlength: function(value, element, param) {
			return this.optional(element) || this.getLength($.trim(value), element) <= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
		rangelength: function(value, element, param) {
			var length = this.getLength($.trim(value), element);
			return this.optional(element) || ( length >= param[0] && length <= param[1] );
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/min
		min: function( value, element, param ) {
			return this.optional(element) || value >= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/max
		max: function( value, element, param ) {
			return this.optional(element) || value <= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/range
		range: function( value, element, param ) {
			return this.optional(element) || ( value >= param[0] && value <= param[1] );
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/email
		email: function(value, element) {
			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
			return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/url
		url: function(value, element) {
			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
			return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
		},
        
		// http://docs.jquery.com/Plugins/Validation/Methods/date
		date: function(value, element) {
			return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
		dateISO: function(value, element) {
			return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/number
		number: function(value, element) {
			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/digits
		digits: function(value, element) {
			return this.optional(element) || /^\d+$/.test(value);
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
		// based on http://en.wikipedia.org/wiki/Luhn
		creditcard: function(value, element) {
			if ( this.optional(element) )
				return "dependency-mismatch";
			// accept only digits and dashes
			if (/[^0-9-]+/.test(value))
				return false;
			var nCheck = 0,
				nDigit = 0,
				bEven = false;

			value = value.replace(/\D/g, "");

			for (var n = value.length - 1; n >= 0; n--) {
				var cDigit = value.charAt(n);
				var nDigit = parseInt(cDigit, 10);
				if (bEven) {
					if ((nDigit *= 2) > 9)
						nDigit -= 9;
				}
				nCheck += nDigit;
				bEven = !bEven;
			}

			return (nCheck % 10) == 0;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/accept
		accept: function(value, element, param) {
			param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
			return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); 
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
		equalTo: function(value, element, param) {
			// bind to the blur event of the target in order to revalidate whenever the target field is updated
			// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
			var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
				$(element).valid();
			});
			return value == target.val();
		}
		
	}
	
});

// deprecated, use $.validator.format instead
$.format = $.validator.format;

})(jQuery);

// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() 
;(function($) {
	var pendingRequests = {};
		// Use a prefilter if available (1.5+)
	if ( $.ajaxPrefilter ) {
		$.ajaxPrefilter(function(settings, _, xhr) {
		    var port = settings.port;
		    if (settings.mode == "abort") {
			    if ( pendingRequests[port] ) {
				    pendingRequests[port].abort();
			    }				pendingRequests[port] = xhr;
		    }
	    });
	} else {
		// Proxy ajax
		var ajax = $.ajax;
		$.ajax = function(settings) {
			var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
				port = ( "port" in settings ? settings : $.ajaxSettings ).port;
			if (mode == "abort") {
				if ( pendingRequests[port] ) {
					pendingRequests[port].abort();
				}

			    return (pendingRequests[port] = ajax.apply(this, arguments));
		    }
		    return ajax.apply(this, arguments);
	    };
    }
})(jQuery);

// provides cross-browser focusin and focusout events
// IE has native support, in other browsers, use event caputuring (neither bubbles)

// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target 
;(function($) {
	// only implement if not provided by jQuery core (since 1.4)
	// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
	if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
		$.each({
			focus: 'focusin',
			blur: 'focusout'	
		}, function( original, fix ){
			$.event.special[fix] = {
				setup:function() {
					this.addEventListener( original, handler, true );
				},
				teardown:function() {
					this.removeEventListener( original, handler, true );
				},
				handler: function(e) {
					arguments[0] = $.event.fix(e);
					arguments[0].type = fix;
					return $.event.handle.apply(this, arguments);
				}
			};
			function handler(e) {
				e = $.event.fix(e);
				e.type = fix;
				return $.event.handle.call(this, e);
			}
		});
	};
	$.extend($.fn, {
		validateDelegate: function(delegate, type, handler) {
			return this.bind(type, function(event) {
				var target = $(event.target);
				if (target.is(delegate)) {
					return handler.apply(target, arguments);
				}
			});
		}
	});
})(jQuery);

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

166 members

Follow on   Twitter   Google+   LinkedIn

| Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 27 Aug 2014
Article Copyright 2013 by Akhil Mittal
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid