MVC3 рддрдХрдиреАрдХ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЬреЛ рдкрд╣рд▓рд╛ рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛, рд╡рд╣ рдХрдИ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред
WPF рдпрд╛ WinForms рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдкреГрдердХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
MVC рдореЗрдВ, рдпрджрд┐ "рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛" рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдПрдХ рдЕрддрд┐рдерд┐ рдкреБрд╕реНрддрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ, рдХрд╣рдиреЗ, рдЙрдиреНрд╣реЗрдВ "рдХреНрд╖реЗрддреНрд░" рдХреЗ рд░реВрдк рдореЗрдВ рдкреГрдердХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ - MVC рд╕рд┐рд░реНрдл рдкрдбрд╝реЛрд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ / рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХреЗрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдпрд╣ рдХреБрдЦреНрдпрд╛рдд
MvcContrib рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рд╣рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ Microsoft рд╕реЗ рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЕрддрд┐рдерд┐ рдкреБрд╕реНрддрдХ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ?
- рдЯрд╛рдЗрдк рдХрд░реЗрдВ ClassLibrary рдХрд╛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ System.Web.Mvc.dll, System.Web.Razor.dll (рдпрджрд┐ рд╡рд┐рдЪрд╛рд░ рд░реЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ), MvcContrib.dll рдФрд░ Microsoft.Web.Mvc.dll (рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рд╛рд░реНрджреНрдз) рдХреЗ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВред , рдЖрдк рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ)ред

- рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВ рдЬреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдорд╡реАрд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рдорд╛рди рд╣реИред рдлрд░реНрдХ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╡реНрдпреВрдЬ, рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрджрд┐ рдлреЛрд▓реНрдбрд░ рд╣рдорд╛рд░реЗ рдЖрд╡рдВрдЯрд┐рдд рдХреНрд╖реЗрддреНрд░ (рдкреЛрд░реНрдЯреЗрдмрд▓ рдХреНрд╖реЗрддреНрд░) рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдПрдХ рдЧреЗрд╕реНрдЯрдмреБрдХ рд╣реИред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рднреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдХрд▓рди рд╡рд┐рдзрд┐ - рдПрдореНрдмреЗрдбреЗрдб рд╕рдВрд╕рд╛рдзрди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЖрдк рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрд░рд┐рдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рднреА рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдорд╡реАрд╕реА рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛)!

- рдПрдХ рдкрдВрдЬреАрдХрд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, рдЬреЛ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдПрдорд╡реАрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ PortableAreaRegistration рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
public class GuestbookRegistration : PortableAreaRegistration { public override string AreaName { get { return "Guestbook"; } } }
рдПрдХрдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрд░рд┐рдпрд╛рдирд╛рдо рдлрд╝реАрд▓реНрдб рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣рд╛рдБ рдЖрдк рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
public class GuestbookRegistration : PortableAreaRegistration { public override string AreaName { get { return "Guestbook"; } } public override void RegisterArea(AreaRegistrationContext context, IApplicationBus bus) { base.RegisterArea(context, bus); context.MapRoute( "Guestbook_Default", "GuestbookPro/{action}/{id}", new { controller = "Guestbook", action = "Index", id = UrlParameter.Optional }); } }
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣: рдХреНрд╖реЗрддреНрд░рдирд╛рдо + "/ {рдирд┐рдпрдВрддреНрд░рдХ} / {рдХреНрд░рд┐рдпрд╛} / {рдЖрдИрдбреА}"ред рдпрд╛рдиреА, рдЗрдВрдбреЗрдХреНрд╕ рдПрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ http: // localhost / Guestbook / Guestbook / Index by default рд╣реЛрдЧрд╛ред
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдм рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ :) рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╣рдо рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдФрд░ MvcContrib рдХреЗ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, Microsoft.Web.Mvc рдХрд╛рдо рдореЗрдВ рдЖ рдЬрд╛рдПрдЧрд╛ :))ред рдХреНрд╖реЗрддреНрд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ рдФрд░ рджреГрд╢реНрдп рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ Web.config рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред

рд╡рд╣ рд╕рдм рд╣реИред рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ / рдЧреЗрд╕реНрдЯрдмреБрдХ / рдЧреЗрд╕реНрдЯрдмреБрдХ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ (рдкрд╣рд▓реА рдЧреЗрд╕реНрдЯрдмреБрдХ рдПрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рд╣реИ, рджреВрд╕рд░рд╛ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдирд╛рдо рд╣реИ)ред
рдЖрдк рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдВрдХ рднреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░реЗрдВрдбрд░рдПрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рдеред
@(Html.ActionLink<GuestbookController>(x => x.Index(), " ")); @Html.ActionLink(" ", "Index", "Guestbook", new { area = "Guestbook" }, null); @{ Html.RenderAction<GuestbookController>(x => x.Index()); } @{ Html.RenderAction("Index", "Guestbook", new { area = "Guestbook" }); }
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП, рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдВрджрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ ActionLinkArea ("рдПрд░рд┐рдпрд╛рдиреЗрдо") рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
[ActionLinkArea("Guestbook")] public class GuestbookController : Controller { }
рдкреАрдПрд╕ рдЦреИрд░, рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдореЛрдиреЛ рдХреЗ рддрд╣рдд рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдмреЛрдирд╕ред
рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╕реМрджреЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ
рджреЛ рдХреНрд╖реЗрддреНрд░ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ -
рдПрдХ рдкреВрдВрдЬреА "рдП" рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдПрдХ рдХреЗ рд╕рд╛рде ред "рдЫреЛрдЯрд╛" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ MvcContrib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдПрдХ рдмрдЧ рд╣реИ (рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдПрдХ-рдЪрд░рд┐рддреНрд░ рдкреИрдЪ :)) рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреАрдкреАрдПрд╕ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╡рд┐рд╖рдп рд╣рдм рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд░рдиреЗрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
PPPS рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рд╣рдордиреЗ "рд╕рдорд░реНрдкрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ" рдХреЗ рд▓рд┐рдП T4MVC рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд┐рдпрд╛ред рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкреИрдЪ рдХреЗ рдмрд╛рдж, T4MVC рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХреАрдХрд░рдг рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ