рдпрд╣ рд▓реЗрдЦ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ Ajax.ActionLink, рдпрд╛ рдмрд▓реНрдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ Ajax.ActionImageLink рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдмрдирд╛рдПрдВрдЧреЗред
рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЕрдЬрд╛рдХреНрд╕, рдПрдПрд╕рдкреА .NET рдПрдорд╡реАрд╕реА 3 рдФрд░ рдЙрдирдХреЗ рд╕рд╛рдЭрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдпред
AJAX (рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдХреНрд╕рдПрдордПрд▓ - "рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрдХреНрд╕рдПрдордПрд▓") рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрдЯрд╛ рдХреЗ "рдкреГрд╖реНрдарднреВрдорд┐" рд╡рд┐рдирд┐рдордп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдирддреАрдЬрддрди, рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рд╡реЗрдм рдкреЗрдЬ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
ASP .NET MVC рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ рдЬреЛ
ASP .NET рддрдХрдиреАрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ (
MVC ) рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
ASPред NET MVC 3 рдореЗрдВ AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдХрдИ рдПрдХреНрд╢рди рддрд░реАрдХреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╣рдо
Ajax.ActionLink рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ:
Ajax.ActionLink
Ajax.ActionLink - рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдЬреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд▓рд┐рдВрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреГрд╖реНрда рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 12 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рдиреАрдЪреЗ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдпрд╣ AjaxHelper ajaxHelper - рдПрдХ рд╡рд░реНрдЧ рдЬреЛ AJAX рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ HTML рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
- string linkText - рд▓рд┐рдВрдХ рдЯреЗрдХреНрд╕реНрдЯ;
- string ActionName - рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдПрдХреНрд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛;
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдВрдЯреНрд░реЛрд▓рд░рдирд╛рдо - рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдирд╛рдо рдЬрд╣рд╛рдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╢рди рд╡рд┐рдзрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛;
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ - рд╡рд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "http" рдпрд╛ "https");
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрд╕реНрдЯрдирд╛рдо - рдбреЛрдореЗрди рдирд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "habrahabr.ru");
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреБрдХрдбрд╝рд╛ - рдЯреБрдХрдбрд╝рд╛ рдХрд╛ рдирд╛рдо, рдЬреЛ URL рдХреЗ рдЕрдВрдд рдореЗрдВ # рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛;
- рд░реВрдЯрд╡реИрд▓реНрдпреВрдб / рдСрдмреНрдЬреЗрдХреНрдЯ рд░реВрдЯрд╡реИрд▓реНрдпреВрдЬрд╝ - URL рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░;
- AjaxOptions ajaxOptions - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рдХрд▓реНрдк
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкреБрд╖реНрдЯрд┐ - рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- string HttpMethod - рд╡рд╣ рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ ("POST", "GET");
- InsertionMode InsertionMode - рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде HTML рдкреГрд╖реНрда рдХреЗ DOM рдХреЛ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП ("InsertAfter", "InsertBefore", рдпрд╛ "рдмрджрд▓реЗрдВ");
- рд╕реНрдЯреНрд░рд┐рдВрдЧ LoadingElementId - HTML рддрддреНрд╡ рдХреА рдЖрдИрдбреА рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬрдмрдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (OnBegin рд╕реЗ OnComplete рддрдХ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ ajaxLoader.gif рд╣реЛ рд╕рдХрддрд╛ рд╣реИ;
- рд╕реНрдЯреНрд░рд┐рдВрдЧ OnBegin - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдЬрд┐рд╕реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- string OnComplete - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдкреГрд╖реНрда рдЕрднреА рддрдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
- string OnFailure - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдЬрд┐рд╕реЗ рдкреЗрдЬ рд░рд┐рдлреНрд░реЗрд╢ рдПрд░рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ;
- рд╕реНрдЯреНрд░рд┐рдВрдЧ OnSuccess - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреГрд╖реНрда рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
- string UpdateTargetId - HTML рддрддреНрд╡ рдХреА рдЖрдИрдбреА рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTML рдорд╛рд░реНрдХрдЕрдк рдпрд╛ рдПрдХ div рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди рдпрд╛ рд╕реНрдкреИрди рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП);
- string Url - рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП URL рдкрддрд╛;
- IDEDIA <string, Object> htmlAttributes - рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рд╕рдВрдЧреНрд░рд╣ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП HTML рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдпрд╛ { class = "add"})ред
рдПрдорд╡реАрд╕реА 3 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ / рд▓рд┐рдкрд┐рдпреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ:
- jQuery-1.4.4.js
- jquery.unobtrusive-ajax.min.js
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдПрдХ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди), рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рд╣реЛрдЧрд╛, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЫрд╡рд┐ рдХрд╛ рдмрджрд▓рдирд╛, рдЯреВрд▓рдЯрд┐рдк:

Microsoft рдиреЗ рд╣рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдПрдХреНрд╢рдирд▓рд┐рдВрдХ рд╣реЗрд▓реНрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдБрдЪреЗ рдХрд┐
рдпрд╣рд╛рдБ рдмрд╛рдЗрдХ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╣рд╛рдпрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
1. рдПрдХ рд░рд┐рдХреНрдд ASP .NET MVC 3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ

рджреГрд╢реНрдп рдЗрдВрдЬрди рдореЗрдВ, рд░реЗрдЬрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

2. рдПрдХ рд╣реЛрдордХрдВрдЯреНрд░реЛрд▓рд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ

рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдЯрд░ рдкреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ ~ / Views / Shared / _Layout.cshtml рдЪреБрдиреЗрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЕрдЬрд╛рдХреНрд╕ рд╕рд╣рд╛рдпрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
3. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ Ajax.ActionImageLink рдмрдирд╛рдПрдБ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ
рдХреЛрд░ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛
рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ
Extensions.cs
рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВред
рд╣рдо рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реА рдЫрд╡рд┐ рд▓рд┐рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо HTML рдорд╛рд░реНрдХрдЕрдк рдФрд░ habrahabr.ru рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдХрдВрдЯреЗрдирд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
<div class="favourite"> <a class="add" title=" " href="#"></a> </div> <div class="favourite"> <a class="remove" title=" " href="#"></a> </div>
рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд╛рдЯрдХрд░, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ (рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрдбреЗрдЯрдЯрд╛рд░реНрдЗрдЧреНрдб рд╣реИ) рдПрдХ div рд╣реЛрдЧрд╛, рдФрд░ рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдХреЛ HTML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдПрдХ рдмрджрд▓рддреЗ рд╡рд░реНрдЧ рдФрд░ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
*
рдпрд╣рд╛рдВ рд▓реЗрдЦрдХ рдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реЛрдЪрд╛, рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ :
@Ajax.ActionLink(" ", "Hello", "World", null, new AjaxOptions() { }, new { @title= Model.inFavourite? " " : " ", @class = Model.inFavourite? "add" : "remove" })
рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрдп рдХрд░ рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧрд╛, рдФрд░ рдереЛрдбрд╝рд╛ рджрд┐рд▓рдХрд╢ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдЙрд╕рдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджрд┐рдпрд╛ ред *
рд╕рдм рдХреБрдЫ рдХрд╛рдЯ рджреЗрдирд╛ ... рдмрд╣реБрдд рдХреБрдЫ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ (рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ UpdateTargetId рд╣реИ) рдПрдХ div рд╣реЛрдЧрд╛, рдФрд░ рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдХреЛ HTML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдПрдХ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрджрд▓рддреЗ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдФрд░ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдкрде рд╣реИред
<div id="favourite"> <a href="/Home/AddOrRemoveFavourite"> <img src="/Content/images/star-off.png" title=" " /> </a> </div> <div id="favourite"> <a href="/Home/AddOrRemoveFavourite"> <img src="/Content/images/star-on.png" title=" " /> </a> </div>
рдиреЛрдЯ:
рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ -
AddOrRemoveFavourite ред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реА рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдврд╛рдВрдЪрд╛ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
public static IHtmlString ImageActionLink(this AjaxHelper helper, string actionName, bool inFavourite, AjaxOptions ajaxOptions) { }
рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:
- рдХреНрд░рд┐рдпрд╛рдирд╛рдо - рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо (AddOrRemoveFavourite);
- inFavourite - рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕рдВрдХреЗрдд рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреА рдЧрдИ рд╣реИ;
- ajaxOptions - рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдкреИрд░рд╛рдореАрдЯрд░ред
рд╣рдорд╛рд░реА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП HTML рдорд╛рд░реНрдХрдЕрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП,
TagBuilder рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
var builder = new TagBuilder("img"); builder.MergeAttribute("src", String.Format("/Content/images/star-{0}.png", inFavourite ? "on" : "off")); builder.MergeAttribute("title", inFavourite ? " " : " ");
рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ Ajax.ActionLink рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions).ToHtmlString();
рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ HTML img рддрддреНрд╡ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкрд╛рда рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЬреЛрдбрд╝реЗрдВ:
return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)));
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реА рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕.cs рдХреНрд▓рд╛рд╕ рдлреЙрд░реНрдо рд▓реЗрдЧреА:
public static class Extensions { public static IHtmlString ImageActionLink(this AjaxHelper helper, string actionName, bool inFavourite, AjaxOptions ajaxOptions) { var builder = new TagBuilder("img"); builder.MergeAttribute("src", String.Format("/Content/images/star-{0}.png", inFavourite ? "on" : "off")); builder.MergeAttribute("title", inFavourite ? " " : " "); var link = helper.ActionLink("[replaceme]", actionName, inFavourite, ajaxOptions).ToHtmlString(); return new MvcHtmlString(link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing))); } }
рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдердб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ (
@ MVC3_AjaxActionImageLink.Core рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж), рдирд┐рдореНрди HTML рдорд╛рд░реНрдХрдЕрдк рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#favourite" ref="/Home/AddOrRemoveFavourite"> <img src="/Content/images/star-on.png" title=" " /> </a>
рдпрд╛
<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#favourite" href="/Home/AddOrRemoveFavourite"> <img src="/Content/images/star-off.png" title=" " /> </a>
рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ div, рд╕рд┐рддрд╛рд░реЛрдВ рдХреА рддрд╕реНрд╡реАрд░реЗрдВ, рджреЗрдЦрдиреЗ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдФрд░ рдЦреБрдж AddOrRemoveFavourite рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
4. рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ AddOrRemoveFavourite рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдирд╛
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИ, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдПрдХ рд╕рдВрдЦреНрдпрд╛, JSON рдбреЗрдЯрд╛, рдЖрджрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдирдП рддрддреНрд╡ рдХреЗ HTML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХрд╛рд╢ (рдпрд╛ рд╕реМрднрд╛рдЧреНрдп рд╕реЗ), ASP .NET MVC 3 рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб (рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдердб) рдореЗрдВ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдердб рдореЗрдВ рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд┐рдП рдмрд┐рдирд╛ рдорд╛рд░реНрдХрдЕрдк рдирд╣реАрдВ рдмрдирд╛ рдкрд╛рдПрдВрдЧреЗ (рдЕрдиреНрдпрдерд╛, рдореМрд▓рд┐рдХ рдореЗрдВ рд╕реЗ рдПрдХ) MVC-
DRY рд╕рд┐рджреНрдзрд╛рдВрдд)ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд┐рдзрд┐ рд╕реЗ, рд╣рдо рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдкрд░ рдХреЙрд▓ рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрджреНрдзрддрд┐ рдкрд░ рдХреЙрд▓ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ HTML рдорд╛рд░реНрдХрдЕрдк рд▓реМрдЯрд╛рдПрдЧрд╛ред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
4.1ред рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВ
рдкрд╛рд░реНрд╢рд┐рдпрд▓ рдлреЛрд▓реНрдбрд░ рдХреЛ
рд╡реНрдпреВ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЖрдВрд╢рд┐рдХ рдореЗрдВ, рдкрд╕рдВрджреАрджрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВред
рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдПрдБ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ
рдкрд╕рдВрджреАрджрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВ рдФрд░
AddOrRemoveFavourites_PartinyView рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ

рдЬреЛрдбрд╝реЗ рдЧрдП рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВ:
@using MVC3_AjaxActionImageLink.Core @Model bool
рдФрд░ рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рд╕реНрд╡рдпрдВ:
@Ajax.ImageActionLink("AddOrRemoveFavourite", (bool)Model, new AjaxOptions() { UpdateTargetId = "favourite" });
рдиреЛрдЯред рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореЙрдбрд▓ рдкреНрд░рдХрд╛рд░ рдмреВрд▓ рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд░ рд╣реЛрдЧрд╛ред
Index.cshtml рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрдм рд╡рд┐рд╕реНрддрд╛рд░ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддреА рд╣реИ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдФрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
@using MVC3_AjaxActionImageLink.Core @model bool @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> <div id="favourite"> @{ Html.RenderPartial("/Views/Partial/Favourites/AddOrRemoveFavourites_PartialView.cshtml", Model); } </div>
4.2ред рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ AddOrRemoveFavourite рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдореЙрдбрд▓ рд╕реЗ рдмрд╛рдВрдзреЗрдВ
рд╣рдорд╛рд░реЗ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрде рдХреЛ рдкрд╛рд░ рдХрд░рдХреЗ, рдмрджрд▓реЗ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рд╣рдо рд╕реНрдЯреЗрдЯрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдЯреЗрдЯрд┐рдХ рдмреВрд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рджреЛрдиреЛрдВ рд╡реНрдпреВрдЬ рдХреЗ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ
HomeController.cs рд╡рд░реНрдЧ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
public class HomeController : Controller { public static bool inFavourite = true; public ActionResult AddOrRemoveFavourite() { if (Request.IsAjaxRequest()) { inFavourite = !inFavourite;
5. рдХреНрдпрд╛ рдмрдЪрд╛ рд╣реИ?
рдЕрдВрддрд┐рдо рдЪрд░рдг рдЫрд╡рд┐рдпрд╛рдБ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕реНрдЯрд╛рд░-рдСрдл.рдкреАрдПрдирдЬреА рдФрд░ рд╕реНрдЯрд╛рд░-рдСрди.рдкрдВрдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рдПрдПрд╕рдкреА .NET рдПрдорд╡реАрд╕реА 3 рдореЗрдВ AJAX рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ

рдирд┐рд╖реНрдХрд░реНрд╖

рддреЛ, рд╣рдордиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдФрд░ рдХреНрдпрд╛ рд╕реАрдЦрд╛:
- Ajax.ActionLink рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ASP .NET MVC 3 рдореЗрдВ AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
- рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- Html рд╣реЗрд▓реНрдкрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ AJAX рдХреЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рдЙрддреНрдкрдиреНрди HTML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕реАрдЦрд╛
- DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рди рдХрд░реЗрдВ
рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдирд╛рдо рд╕реНрдЯреАрдлрди рд╡рд╛рд▓реНрдЯреЗ рдХреА
рд╕рдВрдкрд░реНрдХ рдЬрд╛рдЧреАрд░
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред