ASP.NET MVC 2 рдврд╛рдВрдЪреЗ рдХреА рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдХреЗ рдЪрд╛рд░ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд╛рдж, рд╡рд┐рдХрд╛рд╕ рдЯреАрдо ASP.NET MVC 3 рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреГрдкрд╛ рдХрд░ рд░рд╣реА рд╣реИред рдШреЛрд╖рдгрд╛ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдпрд╣ рдЖрд▓реЗрдЦ рдЙрди рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрдЧрд╛ рдЬреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣реБрдП рд╣реИрдВред
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрддрддрд╛ рдФрд░ рд╕рдорд░реНрдерди
рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, ASP.NET MVC 3 рдХреЗрд╡рд▓ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЪреМрдереЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдШрдЯрдХ рдХреЗрд╡рд▓ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ 2010 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
ASP.NET MVC 3 рдлреНрд░реЗрдорд╡рд░реНрдХ ASP.NET MVC 2 рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
ASP.NET MVC 3 рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛
рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдПрдХ рдирдИ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрдХ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдирдпрд╛ рдПрдорд╡реАрд╕реА 3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдФрд░ рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ: рдирд┐рдпрдВрддреНрд░рдХ, рд╡рд┐рдЪрд╛рд░, рд╕рд╣рд╛рдпрдХ рдлрд╛рдЗрд▓реЗрдВред
ASP.NET MVC 3 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ ASP.NET MVC 2 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП:
- рд╕рднреА web.config рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдмрджрд▓реЗрдВ System.Web.Mvc, рд╕рдВрд╕реНрдХрд░рдг = 2.0.0.0 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде System.Web.Mvc, рд╕рдВрд╕реНрдХрд░рдг = 3.0.0.0 ;
- рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ System.Web.Mvc рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВ;
- .csproj рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, {F85E285D-A4E0-4152-9332-AB1D724D3325} рд╕реЗ {E53F885EA-EAE0-44A6-8774-FFD645390401} рдХреЗ рд╕рд╛рде ProjectTypeGuids рддрддреНрд╡ рдХреЗ рдорд╛рди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ;
- рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ ASP.NET MVC 2 рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рддреЛ web.config рдлрд╝рд╛рдЗрд▓ рдХреЗ configuaton рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
ASP.NET MVC 3 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рдореЗрдВ рдирд╡рд╛рдЪрд╛рд░
рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВред
рд░реЗрдЬрд╝рд░ рд╡реНрдпреВ рдЗрдВрдЬрди рд╕рдкреЛрд░реНрдЯ
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, ASP.NET MVC рдирдП рд░реЗрдЬрд░ рд╡реНрдпреВ рдорд╛рд░реНрдХрдЕрдк рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рд░реЗрдЬрд░ рдХреЛ рд╡реЗрдмрдорд╛рд░реНрдЯрд┐рдХреНрд╕ рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░реЗрдЬрд░ рдЕрдм MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рд░реЗрдЬрд░ HTML рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред ASP.NET рд╡реЗрдм рдлреЙрд░реНрдо рдЗрдВрдЬрди рдирд┐рдпрдВрддреНрд░рдг рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдб HTML рдХреЛрдб рдХреЗ рдмреАрдЪ рдЕрддрд┐рднрд╛рд░рд┐рдд рджрд┐рдЦрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рд░реЗрдЬрд░, рдПрдХ рдЕрддреНрдпрдВрдд рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ HTML рдХреЛрдб рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрд┐ рддрд░реНрдХ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдХреАрдХреГрдд рдХрд░реЗрдЧрд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдиреАрдЪреЗ рдкреБрд░рд╛рдиреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрдВрдЬрди (рдмрд╛рдПрдВ) рдФрд░ рдирдП рд░реЗрдЬрд░ рдЗрдВрдЬрди (рджрд╛рдПрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд░реВрдк рд╣реИред
рд░реЗрдЬрд░ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ "<%%>" рд╕реЗрдЯ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдХрдореА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ @ рдпреВрдЬрд╝рд┐рдВрдЧ рдЧреНрд░реБрдкрд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╕рдорд╛рдкрди рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ "}} рдЪрд░рд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред WebForms рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ "<%}%>" рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ рдЖрдк рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рд░реЗрдЬрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдореБрдЦреНрдп рдлреЛрдХрд╕ рдХреНрдпрд╛ рд╣реИ - рдХреЛрдб рдФрд░ рдЗрд╕рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЛ рдХрдо рдХрд░рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреЛрдб рдореЗрдВ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛рддреЗ рд╕рдордп рд░реЗрдЬрд░ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдмрдлрд╛рд░реНрдо рдФрд░ рд░реЗрдЬрд░ рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
рдпрд╣ рдЙрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдердХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рд╢рд░реНрддреЛрдВ рдХреЛ "<%%>" рддрддреНрд╡реЛрдВ рд╕реЗ рд╣рд░рд╛рдирд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рджреЗрдЦреЗрдВ рдХрд┐ рд░реЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдорд╛рд░реНрдХрдЕрдк рд╢рд╛рдЦрд╛рдПрдВ рдХрд┐рддрдиреА рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рджрд┐рдЦрддреА рд╣реИрдВред рдЙрд╕реА рд▓рд╛рдн рдХреЛ рдХрдИ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЪрдХреНрд░ред
рд░реЗрдЬрд░ рдореЗрдВ рди рдХреЗрд╡рд▓ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЕрдВрддрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рдкреГрд╖реНрда рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ WebFroms рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
рдПрдХ рд╣реА рдХреЛрдб, рд▓реЗрдХрд┐рди рд░реЗрдЬрд░ рд╢реИрд▓реА рдореЗрдВ, рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЖрдк рд╕реНрдХреЙрдЯ рдЧреБрдереНрд░реА рдХреЗ рд▓реЗрдЦ рдХреЗ рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рд╕реЗ рд░реЗрдЬрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрдИ рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
рдирдП рд░реЗрдЬрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрдВрдЬрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде, рдПрдорд╡реАрд╕реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрд╛ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреВрд▓реНрд╕ рдореЗрдВ рдЕрдм рдирдпрд╛ рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╕рдордп рд╡реНрдпреВ рдЗрдВрдЬрди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рджреГрд╢реНрдп рдФрд░ ViewModel рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдЧреБрдг
рдЪреВрдВрдХрд┐ MVC3 рдХреЗрд╡рд▓ .NET 4.0 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ ASP.NET MVC рдореЗрдВ .NET рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рдЗрди рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирдП рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред MVC 3 рдореЗрдВ, рдкрд░рд┐рдЪрд┐рдд ViewData рд╕рдВрдкрддреНрддрд┐ рдХреЛ View рдФрд░ ViewModel рдХреЗ рджреЛ рдЧрддрд┐рд╢реАрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
ViewData ["рд╢реАрд░реНрд╖рдХ"] = "рд╢реАрд░реНрд╖рдХ"; </ em
ViewData ["рд╕рдВрджреЗрд╢"] = "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!";
рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдиреЛрдВ рдХреЛ рдЖрд░рдВрднрд┐рдХ рдХрд░реЗрдВ:
ViewModel.Title = "рд╢реАрд░реНрд╖рдХ";
ViewModel.Message = "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!";
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рддреБрд░рдиреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ .NET 4.0 рдореЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреГрд╢реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЦреЗрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
<h2> View.Title </ h2>
<p> View.Message </ p>
рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕рд╣рд╛рдпрддрд╛
рдПрдорд╡реАрд╕реА 3 рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдмреЙрдХреНрд╕ рд╕реЗ рдХреЛрдб рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ред
ASP.NET MVC 3 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рдирд┐рдореНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
- рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
- рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
- рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдЗрдВрдЬрди рдХреЗ рдХрд╛рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг, рд╡реЗрдм рдлреЙрд░реНрдо рдФрд░ рд░реЗрдЬрд░ рджреЛрдиреЛрдВ;
- рдХрд╛рд░реНрд░рд╡рд╛рдИ рдлрд┐рд▓реНрдЯрд░
рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреЗрд╡рд▓рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдбреЗрд╡рд▓рдкрд░ IServiceLocator рдХрд╛ рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SetCurrent рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, ASP.NET MVC 3 рдЗрдВрдЬрди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛:
- рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛;
- рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдЗрдВрдЬрди рдФрд░ рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдкреЗрдЬреЛрдВ рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛;
- рддреБрд░рдВрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдлрд┐рд▓реНрдЯрд░ред
- рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд░ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП;
- рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рджрд╛рддрд╛ (рдореВрд▓реНрдп рдкреНрд░рджрд╛рддрд╛);
- рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП;
- рдореЙрдбрд▓ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред
- ControllerBuilder.GetControllerFactory рдкрд╣рд▓реЗ IServiceLocator рдХреЗ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА, рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░рдЦрд╛рдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
- рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рддреЗ рд╕рдордп, DefaultControllerFactory рдкрд╣рд▓реЗ IServiceLocator рдХреЗ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА, рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
- рдлрд╝рдВрдХреНрд╢рди DefaultControllerFactory.ReleaseController - рдирд┐рдпрдВрддреНрд░рдХ рдЬрд╛рд░реА - рдХреЗрд╡рд▓ IServiceLocator рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдЧрд░ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖ IMvcServiceLocator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- ViewEngineCollection , рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рд╡реНрдпреВ рдЗрдВрдЬрди рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ MVC 3 рдореЗрдВ рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд╕реНрддреБрддрдГ рд╕рднреА рджреГрд╢реНрдп рдЗрдВрдЬрди рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдЬреЛ IServiceLocator рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рд╡рд┐рдзрд┐ рдХреЙрд▓ред FindView рдпрд╛ред FindPartialView рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛, рдпрд╛ рддреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ IServiceLocator рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- WebFormView рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ IServiceLocator рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╛ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ Activator.CreateInstance рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдЬ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк IServiceLocator рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЗрдЬ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╡реИрд╢реНрд╡рд┐рдХ рдлрд┐рд▓реНрдЯрд░
MVC 3 рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░ рддрдВрддреНрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрди рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╣рд░ рдмрд╛рд░ рдХрд┐рд╕реА рднреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ GlobalFilters рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :
GlobalFilters.Filters.Add (рдирдИ MyActionFilter ());
рдЖрдк рдирдП IFilterProvider рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬреЗрдХреНрд╢рди рдмрдирд╛рдХрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░ рддрдВрддреНрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рддрд░реНрдХ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
JsonValueProviderFactory рдореВрд▓реНрдп рдкреНрд░рджрд╛рддрд╛
рдирдпрд╛ рдореВрд▓реНрдп рдкреНрд░рджрд╛рддрд╛ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдореИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдкрд╣рд▓реЗ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ ASP.NET MVC рдлреНрдпреВрдЪрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ MIME рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / json рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдз рдореЗрдВ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ:
"" ProductName ":" рдорд┐рд▓реНрдХ "," рдХреЙрд╕реНрдЯ ":" 12.0 "}
рдлрд┐рд░, JsonValueProviderFactory рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдпреЗ рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдореНрди рдХреНрд░рд┐рдпрд╛ рдореЗрдВ ProductModel рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
[HttpPost]
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ActionResult SaveProduct (ProductModel productModel)
{
...
}
рдкреНрд░рдХрд╛рд░ ProductModel рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ProductModel
{
publi рд╕реНрдЯреНрд░рд┐рдВрдЧ ProductName {рдкреНрд░рд╛рдкреНрдд; рд╕реЗрдЯ ;;
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд╛рдЧрдд {рдкреНрд░рд╛рдкреНрдд; рд╕реЗрдЯ;}
}
.NET 4.0 рд╕рддреНрдпрд╛рдкрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ IValidatableObject рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
ValidationAttribute рд╡рд░реНрдЧ .NET 4.0 рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ ValidationContext рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдирдП рдЕрддрд┐рднрд╛рд░рд┐рдд IsValid рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░, рдирдП рдЧреБрдг рдорд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рддреНрдпрд╛рдкрди рд╕рдВрджрд░реНрдн рдФрд░ рд╕рддреНрдпрд╛рдкрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдмрд▓реНрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреНрдп рдЧреБрдг рднреА рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рдиреНрдп рдХрд░реЗрдЧрд╛ред
рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рджреЛ рдЧреБрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, .NET 4.0 рдореЗрдВ рдПрдХ рдирдпрд╛ IValiditableObject рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЗ рд╡рд░реНрдЧ рд╕реНрддрд░ рдкрд░ рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдореЙрдбрд▓ рдХреЗ рдКрдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрдИрд╡реАрдбрдмрд▓рд┐рдЯреЗрдмрд▓ рдСрдмрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрдкрдиреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред MVC 3 рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЙрдбрд▓ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IClientValidatable
рдЗрд╕ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдврд╛рдВрдЪреЗ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
.NET 4 рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
MVC 3 рдирдИ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ .NET 4 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DisplayAttributeред MVC 3 рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
IMetadataAware
рдирдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдХрд┐ рдЬрдм рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕ рдХреНрд╖рдг рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд╕реЛрд╕рд┐рдПрдЯреЗрдбрдореИрдбреЗрдЯрд╛рдЯрд╛ рдкреЛрдкреНрд░реЛрдЗрдбрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DataAnnotations рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╡рд░реНрдЧ, DataAnnotationsModelMetadataProviderред
рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо
рдПрдорд╡реАрд╕реА 3 рдиреЗ рдПрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдирдП рдкреНрд░рдХрд╛рд░ рдкреЗрд╢ рдХрд┐рдПред
HttpNotFoundResult
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд░рд┐рдпрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рдЬреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рдорд┐рд▓рд╛ (HTTP 404)ред рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ, HttpNotFound (), рдЬреЛ HttpNotFoundResult рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ :
HttpStatusCodeResult
рдирдП рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд
HttpStatusCodeResult рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдордирдорд╛рдирд╛ HTTP рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рджреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ HTTP рдХреЛрдб рдХреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░рд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рд▓реЗрддрд╛ рд╣реИред
рд▓рдЧрд╛рддрд╛рд░ рдЕрдиреБрдкреНрд░реЗрд╖рд┐рдд
MVC3 рдПрдХ рд╕реНрдерд╛рдпреА рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ (HTTP 301) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдП рдирд┐рдпрдВрддреНрд░рдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди - рдирд┐рд░реНрджрд┐рд╖реНрдЯ URL рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ;
- RedirectToRoutePermanent - рд╡рд░реНрддрдорд╛рди рд░реВрдЯ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд░реВрдЯрдирд╛рдо рдФрд░ рд░реВрдЯрд╡реИрд▓реНрдпреВрдЬрд╝ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ);
- RedirectToActionPermanent - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдпрдВрддреНрд░рдХ рдирд╛рдо рдФрд░ рдорд╛рд░реНрдЧрд╡реИрд▓реНрдпреВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред
MVC2 рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрди
рдЕрдкрд╡рд╛рдж рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рд▓рд╛рдЧреВ рдЕрдкрд╡рд╛рдж рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рдереЗ (рдпрджрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рдЖрджреЗрд╢ рдореВрд▓реНрдп рдерд╛)ред рдЕрдм рдФрд░ рдЖрдЧреЗ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЙрд╕рдХреЗ рдмрд╛рдж рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ред рдпрджрд┐ рдЗрди рдлрд┐рд▓реНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░ рдХрд╛ рдореВрд▓реНрдп рдЕрд▓рдЧ рд╣реИ, рддреЛ рд╡реЗ рдСрд░реНрдбрд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдСрд░реНрдбрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдЬреНрдЮрд╛рдд рдореБрджреНрджреЗ
рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
- рд░реЗрдЬрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдФрд░ рдЗрдВрдЯреЗрд▓реАрд╕реЗрдирд╕ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ;
- рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЧреЛ рдЯреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред cshtml (рд░реЗрдЬрд░);
- рд░реЗрдЬрд░ рд╡реНрдпреВ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдПрдбрд┐рдЯ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рддрдХ рдХреЛрдИ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рд▓реАрдЬ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ ASP.NET MVC 3 рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрд╣реБрдд рд╕рд╛рд░реА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд▓рд╛рдПрдЧрд╛ред рдирд┐рд░рдВрддрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╢реАрд▓рддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рд╣реА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред
рдЗрд╕реАрд▓рд┐рдП, рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рд╕рднреА ASP.NET MVC рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ MVC3 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 1 рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдкреВрд░рд╛ рдзреНрдпрд╛рди рджреЗрдВ рдФрд░ рдЕрдкрдиреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдордп рд╕рдорд░реНрдкрд┐рдд рдХрд░реЗрдВред