
рдпрд╣ рдЖрд▓реЗрдЦ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ (рд░реЗрдХреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ:
рдПрдорд╡реАрд╕реА 2: рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ ред рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣рд╛рдВ рд▓рд┐рдВрдХ рднреА рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛, рдореЗрд░реЗ рд░рд┐рд╕реЛрд░реНрд╕рдкреНрд░реЛрд╡реЗрдЗрдбрд░рдлреИрдХреНрдЯрд░реА рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдБрдЧрд╛, рдФрд░ рдлрд┐рд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдКрдБрдЧрд╛ред
рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╡рд┐рдХрд▓реНрдк
рдХрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдФрд░ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рджреЛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ
ASP.NET MVC 3 рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓реЗрдЦ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХрдИ рд▓рд┐рдВрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
- рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЗрдВ (resx)
- рд╡рд┐рднрд┐рдиреНрди "рджреГрд╢реНрдп" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рджреЗрдЦреЗрдВ)
рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ: рдлрд╝реАрд▓реНрдб рдирд╛рдо, рд╕рддреНрдпрд╛рдкрди рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреБрдХрд╕рд╛рди рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореИрдиреБрдЕрд▓ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛрдЧреА, рдХрднреА-рдХрднреА рдЕрдиреБрд╡рд╛рдж рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рджреГрд╢реНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХрдВрдЯреЗрдВрдЯ рдХреЛ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдереА, рдЬреЛ рдХрд┐ рдПрдбрдорд┐рди рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдбрдорд┐рди рдкреИрдирд▓ рд╕реЗ рд░реЗрдХреНрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдбрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЦреБрдж рд╣реА рдЗрдВрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдПрдХ рд╢реМрдХрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг
рдмреЗрд╢рдХ, рдЖрдк рдЗрди рддреАрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг
рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдЦрд╛рд▓реА MVC 3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ Entity Framework Code First рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдХрд╕реНрдЯрдо рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рджрд╛рддрд╛ ред рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ "рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓" рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдЯреАрдлрди рд╕реИрдВрдбрд░рд╕рди рдиреЗ рдЕрдкрдиреА рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдЪрд▓реЛ рдЧреЛрджрд╛рдо рдХреА рдкреИрд░реЛрдбреА рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 4 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрдкрд╛рдж рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдЧреА:
-Identifikator
рдЙрддреНрдкрд╛рдж рдХрд╛ рдирд╛рдо (рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВрдЧреЗ)
-рдкреНрд░рд╛рд╕ (рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
рдкреНрд░рд╕рд╡ рдХреЗ рд╕рдордп (рдкрд┐рдЫрд▓реЗ рдХреЗ рд╕рдорд╛рди)
рдЕрдЧрд▓рд╛ рдХрджрдо рдЙрддреНрдкрд╛рдж рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛) рдФрд░ DbContext рдмрдирд╛рдПрдВ:
public class Product { public int ProductId { get; set; } [Required] [StringLength(128)] public string Name { get; set; } [Required] public decimal Price { get; set; } [Required] public DateTime ImportDate { get; set; } } public class ProductDbContext : DbContext { public DbSet<Product> Products { get; set; } }
рдЕрдм рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ (рдХреНрд░рд┐рдпрд╛рдПрдБ) рдЙрддреНрдкрдиреНрди рдХрд░ рджреВрдВрдЧрд╛, рдпрд╣ рдереЛрдбрд╝рд╛ рдбрд░рд╛рд╡рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рдВрдкрд╛рджрди рдХрд╛ рд╕рдВрдпреЛрдЬрди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░:
ASP.NET MVC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦрд╝рд░рд╛рдм рдиреЛрдЯреНрд╕ред рднрд╛рдЧ 1 (рдФрд░ рдХреЗрд╡рд▓ рдПрдХ) рдЬреЛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:

рд╣рдо рд░рд┐рд╕реЛрд░реНрд╕рдкреНрд░реЛрд╡рд┐рдбрд░рдлреИрдХреНрдЯрд░реА рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рд╕рд╛ рдЧреВрдЧрд▓, рдореБрдЭреЗ
рдПрдордПрд╕рдкреАрдПрдирдбреА рдореЗрдВ рдПрдПрд╕рдкреА.рдиреЗрдЯ 2.0 рд░рд┐рд╕реЛрд░реНрд╕-рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреБрд░рд╛рдирд╛ рд▓реЗрдЦ рдорд┐рд▓рд╛, рд╕рд╛рде рд╣реА рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде
рд░рд┐рд╕реЛрд░реНрд╕рдкреНрд░реЛрд╡рд┐рдбрд░рдлреИрдХреНрдЯрд░реА рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг, рд▓реЗрдХрд┐рди 4 рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдПред рдЙрд╕реА рдХреЛрдбрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХ рддреИрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
ASP.NET 2.0 рдХрд╕реНрдЯрдо SQL рд╕рд░реНрд╡рд░ рд░рд┐рд╕реЛрд░реНрд╕ рд╕рд░реНрд╡рд░ ред
рдЕрдм рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдХреНрд╖рд╛ рдмрдирд╛рдПрдБ:
public class GlobalizationResource { public int GlobalizationResourceId { get; set; } [Required] [StringLength(128)] public string ResourceObject { get; set; } [Required] [StringLength(128)] public string ResourceName { get; set; } [Required] [StringLength(5)] public string Culture { get; set; } [Required] [StringLength(4000)] public string ResourceValue { get; set; } }
рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдордд рднреВрд▓рдирд╛ред рдореБрдЭреЗ рдХреЛрдбрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ MSDN рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмреАрдЪ рдПрдХ рдФрд╕рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рд╛, рдХреЛрдб рдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ 150 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<system.web> <globalization enableClientBasedCulture="true" resourceProviderFactoryType="DbLocalizationExample.Models.CustomResourceProviderFactory" uiCulture="auto" culture="auto" /> ... </system.web>
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рднрд╛рд╖рд╛ рдЪреБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ (рдореИрдВ рдПрдХ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 20 рдорд┐рдирдЯ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗ рдЦреБрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдорд╛рдирдХ рдЬреАрд╡рдирдХрд╛рд▓, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдпрд╛рдж рд╣реИ) рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ рдПрдХ рднрд╛рд╖рд╛ рдЪреБрдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)ред рд╣рдо рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ afana.me рд╕реЗ рд╡рд┐рдЪрд╛рд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
public static class CultureHelper { private static readonly List<string> Cultures = new List<string> { "ru-RU",
рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдХреБрдХреАрдЬ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
public ActionResult SetCulture(string culture) {
рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХреГрддрд┐ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ GetVaryByCustomString рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Global.asax рдореЗрдВ рддрд░реНрдХред
protected void Application_AcquireRequestState(object sender, EventArgs e) { string cultureName = CultureHelper.GetCultureFromCookies(Request);
рдЕрдиреБрд╡рд╛рдж рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж: рдореЗрд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рддреНред рд╕рд┐рд░реНрдл рдПрдХ рдЙрддреНрдкрд╛рдж рд╡рд╕реНрддреБ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рджреГрд╢реНрдп рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛:
@(Culture == "ru-RU" ? item.Name : HttpContext.GetLocalResourceObject("/Home/Index", "Product_" + item.ProductId))
рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрд╡рддрдГ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╡рд░реНрдгреЛрдВ рдХрд╛ рдХреЛрдИ рднреА рдЕрдиреБрдХреНрд░рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╣рдорд╛рд░реА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реАрдорд┐рдд рд╕рдЪреНрдЪрд╛рдИ 128 рд╣реИ), рджреВрд╕рд░рд╛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред
рд▓реЗрдЖрдЙрдЯ рдореЗрдВ, рднрд╛рд╖рд╛ рдЪреБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ:
<div class="language"> <span>@Html.ActionLink("rus", "SetCulture", "Home", new { culture = "ru-RU" }, null)</span> <span>@Html.ActionLink("eng", "SetCulture", "Home", new { culture = "en-US" }, null)</span> </div>
рдЖрдк рдЗрд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдерд╛, рдореИрдВрдиреЗ рд╕рдВрджрд░реНрдн рдмрджрд▓ рджрд┐рдпрд╛ (рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛) рдФрд░ рдЕрдм рдИрдПрдл рдиреЗ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред
рджреЗрдЦреЗрдВ ->
рдЕрдиреНрдп рд╡рд┐рдВрдбреЛрдЬ ->
рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрдВрд╕реЛрд▓ рдФрд░ рджрд░реНрдЬ рдХрд░реЗрдВ (рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдЕрд▓рдЧ рд╕реЗ):
Update-Package EntityFramework Enable-Migrations
рдЕрдм рдЖрдк рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Add-Migration AddGlobalizationResources Update-Database
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдкрд░реЗрд╢рд╛рди рд╣реИрдВ, рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдкреБрд░рд╛рдиреЗ EF рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреЛрдИ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдРрд╕реА рд▓рд╛рдЗрди рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдпрджрд┐ рдЖрдк рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ Application_Start рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рднреА рдбреЗрдЯрд╛ рд╣рдЯрд╛рддрд╛ рд╣реИ):
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ProductDbContext>());
рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:
EF 4.3 рдСрдЯреЛрдореИрдЯрд┐рдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╡реЙрдХрдереНрд░реВ ред
рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдЧреНрд░рд╛рд╣рдХ рдорд╛рдиреНрдпрддрд╛
рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рджрд╢рдорд▓рд╡ рдФрд░ рдбреЗрдЯрд╛рдЯрд╛рдЗрдо рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "4.00" рд╣реИ, рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд▓рд┐рдП рдпрд╣ "4.00" рд╣реИред рджрд┐рдирд╛рдВрдХ рдХреА рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: 12/21/2012 рдФрд░ 12/21/2012ред рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
рд╡реИрд╢реНрд╡реАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ jquery рдпреВрдЖрдИ рдбреЗрдЯрд╛рдкреАрдХрд░ рдХреЛ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдВрдЧреЗред
рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ (рд╡реИрд╢реНрд╡реАрдХрд░рдг рдХрд╛ "рдореВрд▓", рдПрдХ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡реАрдХрд░рдг, рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдЯрд╛ рдЯреИрдЧ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдФрд░ jquery ui datapicker рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ):
<script src="@Url.Content("~/Scripts/globalization/globalize.js")" type="text/javascript"></script> @Html.GlobalizationLink() @Html.MetaAcceptLanguage() <script src="@Url.Content("~/Scripts/common.js")" type="text/javascript"></script>
рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ; рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
ASP.NET MVC 3 рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг - рднрд╛рдЧ 2 (NerdDinner)рдкрд░рд┐рдгрд╛рдо
рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рддрд╛ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдпрд╛ рдЬреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдЭрд╛ рд▓рд┐рдВрдХ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЬреЙрди рд╕реНрдХреАрдЯ рдЕрдкрдиреА рдкреБрд╕реНрддрдХ "рд╕реА # рдЗрди рдбреЗрдкреНрде" рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдореИрдВ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореИрдВ рдкреВрд░реНрдг рдЕрдиреБрд╡рд╛рдж рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрджрд┐ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рддреЛ рдЬреАрд╡рдирдХрд╛рд▓ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЖрджрд┐ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ (рдпрд╣ рддрдм рд╣реИ рдЬрдм рдЖрдк рдЕрдиреБрд╡рд╛рдж рд╕рдВрдкрд╛рджрди рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ)ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2010):
рд▓рд┐рдВрдХ (2.89 рдПрдордмреА) (рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдкрд░рд┐рдорд╛рдг рдХрд╛ рдПрдХ рдХреНрд░рдо рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЗрд╡рд▓ рдПрдХ рд╣реИ)
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
рд╕рдВрджрд░реНрдн
ASP.NET 2.0 рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рддрд╛ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд░рд┐рд╕реЛрд░реНрд╕рдкреНрд░реЛрдЗрдбрд░рдлреИрдХреНрдЯреНрд░реА рдХреНрд▓рд╛рд╕ASP.NET 2.0 рдХрд╕реНрдЯрдо SQL рд╕рд░реНрд╡рд░ рд░рд┐рд╕реЛрд░реНрд╕рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ASP.NET MVC 3 рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдгASP.NET MVC 3 рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг - рднрд╛рдЧ 2 (рдирд░реНрдбрдбрд┐рдирд░)рдХрд┐рддрд╛рдмреЗрдВ
рдлреНрд░реАрдореИрди рдПред рд╕реИрдВрдбрд░реНрд╕рди рдПрд╕ - рдкреНрд░реЛ ASP.NET MVC 3 рдлреНрд░реЗрдорд╡рд░реНрдХ рддреАрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг - 2011
рдЬреВрд▓рд┐рдпрд╛ рд▓рд░реНрдорди рдФрд░ рд░реЛрд╡рди рдорд┐рд▓рд░ - рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ: рдХреЛрдб рдлрд░реНрд╕реНрдЯ - 2012
рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдЗрд╕
ASP.NET MVC 3 рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдЧрд╛рдЗрдб рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐
MVC 4 рдореЗрдВ рдирд┐рдХрд╛рд▓ рджреА рдЧрдИ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ ExecuteCore () MVC 4 ExecuteCore рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред