ASP.NET MVC рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ-рдкреЗрдЬ рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рдЦрд╛рдмрд░реЛрд╡рд╕реНрдХ рдирд┐рд╡рд╛рд╕реАред рд╕рд╛рдЗрдЯ рдиреЗ рдмрд╛рд░-рдмрд╛рд░ рд╕рд┐рдВрдЧрд▓-рдкреЗрдЬ рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдЙрдард╛рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдХреНрдпреЛрдВ, html5 рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ MVC рдХреА рд╢рдХреНрддрд┐ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрддрдиреА рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рд▓рд┐рдЦрдиреА рдереАрдВред

рд╢рд╛рдпрдж рдпрд╣ [sacwar = on] js рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╢рддреНрд░реБрддрд╛ рдереА [sacwar = off] рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ ASP.NET MVC рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдЖрдЧреЗ, рдореИрдВ рдПрдХ-рдкреЗрдЬ ajax рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЪрд░рдг рджрд░ рдЪрд░рдг рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

рдпрджрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ - рдХрдЯреМрддреА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ (рдХреЛрдб рдФрд░ рдЪрд┐рддреНрд░ рд╕рдВрд▓рдЧреНрди рд╣реИрдВ)ред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдорд╛рдирдХ MVC 3 рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╣рд░ рдЪреАрдЬ рдХреЛ рдирд┐рдХрд╛рд▓ рджреЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рд╣реИ, рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдЫрд╡рд┐

рдЪрд░рдг 1 - рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдЬрдм рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЕрдЬрд╛рдХреНрд╕ рд╕реЗ рдорд┐рд▓рд╛ рдерд╛ред рдХреНрдпрд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ! рд╣рдо рдкреГрд╖реНрда рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореБрдЦреНрдп рдмреНрд▓реЙрдХ (_Layout.cshtml) рдХреЛ рдореБрдЦреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдорд╕реНрдпрд╛рдПрдВ рддреБрд░рдВрдд рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:
  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдирдП рдкреГрд╖реНрда рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рдмреИрдХ" рдмрдЯрди рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдкрд░ рд▓реМрдЯрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд┐рдЫрд▓реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдкрд╣рд▓реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИред рдлреЙрд░рд╡рд░реНрдб рдмрдЯрди рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдирдП рдкреГрд╖реНрда рдкрд░ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, F5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдкрд╣рд▓реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдирдП рдЯреИрдм / рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдирдП рдкреГрд╖реНрда рдХрд╛ рд▓рд┐рдВрдХ рдЦреЛрд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреГрд╖реНрда рдЦреЛрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ, рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ PartialView рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рдлрд┐рд░ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЙрд╕ рдкреГрд╖реНрда рдХреЛ рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЙрд╕рдиреЗ рдЯреИрдм (рдЦрд┐рдбрд╝рдХреА) рдХреЗ рдирд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдкреЗрдЬ рдХрд╛ рдирд╛рдо _Layout.cshtml рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред
  5. рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗ рдзреНрдпрд╛рди рднрдВрдЧ рдХрд░рдирд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкреГрд╖реНрда рдкрд░ рдЧрдпрд╛ рдЬрд┐рд╕рдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди ... ajax рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдкреГрд╖реНрда рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рддреНрдпрд╛рдкрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ!
  6. рдФрд░ рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ 100500 рд░рд┐рдХреЙрд░реНрдб рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдЙрд╕реА рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ "рдореЗрд░реЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛"ред рдФрд░ рдлрд┐рд░ред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрдВрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреГрд╖реНрда рдкрд░ рд╣реЛрдиреЗ рд▓рдЧреЗрдЧрд╛ ...)

рдХрд╛рдлреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдФрд░ рдЙрди рд╕рднреА рдХреЛ рд╕рд░рд▓ рдЬреЗрдПрд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рддреБрд░рдВрдд рдХреБрдЫ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ:
  1. рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрддрдорд╛рди рдХреЛ рдмрд╕ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
  2. рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рд╣реЛрдиреЗ рджреЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдорд╛рдиреНрдп рдорд▓реНрдЯреА-рдкреЗрдЬ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  3. рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ js рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдХреЛрдб рдХреА рдЕрдзрд┐рдХрддрдо рд░рд╛рд╢рд┐ рдХреЛ c # рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рджреЗрдВред рдФрд░ js рдкрд░ рд╣рдо рдХреЗрд╡рд▓ 10 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдЕрдВрдд рдореЗрдВ рд╕реНрд╡реАрдХреГрдд рддрдХрдиреАрдХреА рд╕реАрдорд╛рдПрдБ:
  1. рд╣рдо html5 рдЪрд┐рдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
  2. рд╣рдо рд▓реЗрдЖрдЙрдЯ рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдмрд╕ рд╣рдорд╛рд░реЗ рдкреЛрд░реНрдЯрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдареАрдХ рд╕реЗ рдмрдирд╛рдПрдВред
  3. рдкреЛрд░реНрдЯрд▓ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ Ajax / Html рд╕рд╣рд╛рдпрдХреЛрдВ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  4. рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреБрдЫ рдЬрд╛рджреБрдИ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдПрдБ рд▓реЗрдВрдЧреЗред рдЗрди рд╕рдордЭреМрддреЛрдВ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЪрд▓рд┐рдП!

рд╕реНрдЯреЗрдЬ 2 - рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, ajax рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рджреЛрдиреЛрдВ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдкреГрд╖реНрда рдкреВрд░реА рддрд░рд╣ рд╕реЗ (рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рддрд╛ рд╣реИ), рддреЛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ PartialViewResult рдФрд░ ViewResult рджреЛрдиреЛрдВ рдХреЛ рд▓реМрдЯрд╛рдПрдВрдЧреЗред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдЬрд┐рдХрд▓ рдПрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рджреЛ рдлрд┐рдЬрд┐рдХрд▓ рдПрдХреНрд╢рди рдбрд╛рд▓рддреЗ рд╣реИрдВ - SomeAction рдЯрд╛рдЗрдк рдореЗрдВ рд╕реЗ рдПрдХ : ViewResult , рджреВрд╕рд░рд╛ AjaxSomeAction: PartialViewResult ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдЙрдкрд╕рд░реНрдЧ рдкрд╣рд▓рд╛ рдЬрд╛рджреВ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдФрд░ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред
рдХреБрд▓ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
public class HomeController : Controller { private Object GenerateIndexPage() { Object model = null; for (int i = 0; i < 1000000000; i++) { } return model; } [HttpGet] public ViewResult Index() { return View("Index", GenerateIndexPage()); } [HttpGet] public PartialViewResult AjaxIndex() { return PartialView("Index", GenerateIndexPage()); } [HttpGet] public ViewResult About() { return View("About"); } [HttpGet] public PartialViewResult AjaxAbout() { return PartialView("About"); } } 

рдЗрддрдиреЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ GenerateIndexPage () рд╡рд┐рдзрд┐ рдХреБрдЫ рд▓рдВрдмреЗ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪред

рд╕реНрдЯреЗрдЬ 3 - _Layout.cshtml


рдЕрдм рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдореИрдВ рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рддреБрд░рдВрдд рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ:
 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> AjaxNavigation</title> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript")></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript")></script> <script src="@Url.Content("~/Scripts/ajaxnavigation.js")" type="text/javascript")></script> </head> <body> <div id="loadLayout" style="display: none; position: fixed; z-index: 20; top: 0px; left: 0px; width: 100% !important; height: 100% !important;"> <div style="margin-left: -24px; margin-top: -24px; position: relative; top: 50%; left: 50%; z-index: 20;"> <div id="loadMessage"> </div> <div> <img src="@Url.Content("~/Content/progress.gif")" alt="..." /> </div> </div> </div> <div class="page"> <header> <nav> <ul id="menu"> <li>@Ajax.ActionLinkTo(" ", "Index", "Home", "", "  ...")</li> <li>@Ajax.ActionLinkTo(" ", "About", "Home", "", "  ...")</li> </ul> </nav> </header> <div id="main"> @RenderBody() </div> </div> </body> </html> 

рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо jquery рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЙрди рд╕рднреА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЕрдЬрд╛рдХреНрд╕ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдореИрдиреБрдЕрд▓ рд░реАрд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рди рд╣реЛрдВред рд╣рдо рдЖрдЧреЗ ajaxnavigation.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛрдб рдХреА рдмрд╣реБрдд рдЫреЛрдЯреА ~ 10 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдкреГрд╖реНрда рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдордЧреНрд░реА рд╣реИ - рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдирд╛рдоред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдо рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВрдЧреЗ рдЬрдм рдкреГрд╖реНрда рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред

рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд▓реИрдЯрдЖрдЙрдЯ рдФрд░ рд▓реЛрдбрдореЗрд╕реЗрдЬ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрддреНрд╡реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╡рд╣ рдЬрдЧрд╣ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХреЗрдВ рдЬрд╣рд╛рдБ рд╡реЗ рдирд╣реАрдВ рдорд┐рд▓рддреЗред

рдореБрдЦреНрдп рдирд╛рдо рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реАрдзреЗ рдкреГрд╖реНрда рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдЬрд╛рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред рджреЛ рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХреЛрдВ (рд▓реЛрдбрд▓реИрдЯрдЖрдЙрдЯ рдФрд░ рд▓реЛрдбрдореИрд╕реЗрдЬ) рдХреЗ рд╕рд╛рде, рдореБрдЦреНрдп рдмреНрд▓реЙрдХ рдХрд╛ рдПрдХ рдЬрд╛рджреВ рдирд╛рдо рднреА рд╣реИ, рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

Ajax.ActionLinkTo (...) рд╕рднреА рд╕рдВрдмрджреНрдз рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдиреАрдЪреЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдЪрд░рдг 4 - рдЕрдЬрд╛рдХреНрд╕ред


рдпрд╣ рд╕рд╣рд╛рдпрдХ рдорд╛рдирдХ Ajax.ActionLink (...) рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ:
 public static class AjaxHelpers { /// <summary> ///   ,    Ajax       main ///  PartialView /// </summary> public static MvcHtmlString ActionLinkTo(this AjaxHelper ajaxHelper, String linkText, String actionName, String controllerName = null, String areaName = null, String loadMessage = null, Object routeValues = null, Object htmlAttributes = null) { //   RouteValueDictionary routeValueDictionary = new RouteValueDictionary(routeValues); if (!String.IsNullOrEmpty(actionName) && !routeValueDictionary.ContainsKey("action")) { routeValueDictionary.Add("action", actionName); } if (!String.IsNullOrEmpty(controllerName) && !routeValueDictionary.ContainsKey("controller")) { routeValueDictionary.Add("controller", controllerName); } if (!routeValueDictionary.ContainsKey("area")) { if (!String.IsNullOrEmpty(areaName)) routeValueDictionary.Add("area", areaName); else routeValueDictionary.Add("area", ""); } //   Ajax AjaxOptions ajaxOptions = new AjaxOptions() { UpdateTargetId = "main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET", LoadingElementId = "loadLayout", OnBegin = "changeLoadMesage('" + loadMessage + "')", OnSuccess = "onPageLoaded()" }; //   String ajaxActionName = "Ajax" + actionName; return ajaxHelper.ActionLink(linkText, ajaxActionName, null, routeValueDictionary, ajaxOptions, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); } } 

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

AjaxOptions рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ рдФрд░ рджреЛ рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд░реЗрдЧрд╛ (рдмрд╛рдж рдореЗрдВ рдЙрди рдкрд░ рдЕрдзрд┐рдХ):

рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рд╣рдо рд╕рд╣рд╛рдпрдХ рдХреЛ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд╛рдо рдЗрдВрдбреЗрдХреНрд╕ / рдЕрдмрд╛рдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╕рд╣рд╛рдпрдХ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЕрдЬрд╛рдХреНрд╕ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рддреНред AjaxIndex / рдЕрдЬрд╛рдХреНрд╕рдЕрдмрд╛рдЙрдЯ ред

рдЪрд░рдг 5 - рдж рдореИрдЬрд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ajaxnavigation.js


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рддреАрди рдХрд╛рд░реНрдп рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп, рдЬрд┐рд╕реЗ рдмреВрдЯ рд╕рдордп рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 // ,       Ajax function changeLoadMesage(message) { //      $("#loadMessage").empty(); if (message != null) $("#loadMessage").append(message); } 

рджреВрд╕рд░реЗ, рдкреГрд╖реНрда рдХреЗ рднрд╛рдЧ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп:
 // ,       Ajax function onPageLoaded() { //    var url = $("#pageUrl").html().replace("&", "&"); window.history.pushState("ajax", document.title, url); //     document.title = $("#pageTitle").html(); //    $.validator.unobtrusive.parse($("#main")); } 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ рдЗрд╕ url рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдХрд╛ url рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд┐рдВрдЧ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рднреА рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкреЗрдЬрдпреВрдЖрд░ рдмреНрд▓реЙрдХ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреГрд╖реНрда рдкрд░ рд▓рд┐рдВрдХ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд┐рдВрдбреЛ рд╕реНрдЯреЗрдЯ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ рдХреЛрдб рд╢рдмреНрдж " рдЕрдЬрд╛рдХреНрд╕ " рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред рдпрд╣ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрд░ рдХрдорд╛рдВрдб рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдЧреЗ / рдкреАрдЫреЗ рдХреА рдУрд░ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ)ред
рд╣рдореЗрдВ рдкреГрд╖реНрда рд╢реАрд░реНрд╖рдХ рдмрджрд▓рдиреЗ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рддреАрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 //      $(document).ready(function () { //       window.onpopstate = function (event) { if (event.state == "ajax") window.location.reload(); else window.history.replaceState("ajax", document.title, window.location.href); event.preventDefault(); }; //     document.title = $("#pageTitle").html(); }); 

рд╡рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╢реАрд░реНрд╖рдХ рднреА рдмрджрд▓ рджреЗрддреА рд╣реИ, рдФрд░ рдХрд╣рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рднреА рд▓реЗрддреА рд╣реИред рдпрджрд┐ рд░рд╛рдЬреНрдп рдХреЛ " рдЕрдЬрд╛рдХреНрд╕ " рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдмрд╕ рдмрд╛рдж рдХреЗ рдкреБрдирдГ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред

рд╕реНрдЯреЗрдЬ 6 - рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ Html.PageInfo


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 @Html.PageInfo(" ","/Home/Index") <h2>Home</h2> <p> Home page </p> 

Html.PageInfo (...) рд╕рд╣рд╛рдпрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╢реАрд░реНрд╖рдХ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЫрд┐рдкреЗ рд╣реБрдП рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛, рдЗрди рдЫрд┐рдкреЗ рд╣реБрдП рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╣рд╛рдпрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
 public static class HtmlHelpers { /// <summary> ///   : /// 1) "pageTitle" -    /// 2) "pageUrl" -    /// </summary> public static MvcHtmlString PageInfo(this HtmlHelper helper, String title, String url) { // Create title TagBuilder pageTitle = new TagBuilder("div"); pageTitle.SetInnerText(" AjaxNavigation - " + title); pageTitle.MergeAttribute("id", "pageTitle"); pageTitle.MergeAttribute("style", "display: none;"); // Create url TagBuilder pageUrl = new TagBuilder("div"); pageUrl.SetInnerText(url); pageUrl.MergeAttribute("id", "pageUrl"); pageUrl.MergeAttribute("style", "display: none;"); return new MvcHtmlString(pageTitle.ToString(TagRenderMode.Normal) + pageUrl.ToString(TagRenderMode.Normal)); } } 

рд╕реНрдЯреЗрдЬ 7 - рдЕрдВрддрд░рд┐рдо рд╕рд╛рд░рд╛рдВрд╢


рдЕрдм рд╣рдо web.config рд╡реНрдпреВрдЬ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд html / ajax рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗ рдмрд┐рдирд╛ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 <system.web.webPages.razor> ... <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="AjaxNavigation.Core"/> </namespaces> </pages> </system.web.webPages.razor> 

рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕ рдХреНрд░рдо рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
  1. рдбрд╛рдЙрдирд▓реЛрдб рдкреГрд╖реНрда / рд╣реЛрдо / рдЗрдВрдбреЗрдХреНрд╕;
  2. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд▓рд┐рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ / рд╣реЛрдо / AjaxAbout рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддрд╛ рд╣реИ;
  3. рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрдЬрд╛рдХреНрд╕ рдФрд░ рд▓рд┐рдВрдХ / рд╣реЛрдо / рдЕрдмрд╛рдЙрдЯ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ;
  4. рдЗрдВрдбреЗрдХреНрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдЬреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ / рд╣реЛрдо / рдЕрдЬрд╛рдХреНрд╕рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рднреА рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ;
  5. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд▓рдВрдмреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ;
  6. рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд╣рд╛рдиреА рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЙрдкрд▓рдмреНрдз рд╣реИ ("рдмреИрдХ" рдФрд░ "рдлреЙрд░рд╡рд░реНрдб");
  7. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреГрд╖реНрда рддрд╛рдЬрд╝рд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐
рдЫрд╡рд┐
рдЫрд╡рд┐
рдПрдХ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИред рдПрдХ рдирдП рдЯреИрдм / рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╣рдорд╛рд░рд╛ рд▓рд┐рдВрдХ рдЦреЛрд▓рдирд╛ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
рдЫрд╡рд┐

рдЪрд░рдг 8 рдФрд░ рдЕрдВрддрд┐рдо - рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓реЗрдВ ...


рдЖрдЗрдП рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирдП рдЯреИрдм рдореЗрдВ / Home / AjaxIndex рд▓рд┐рдВрдХ рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдЕрдЬрд╛рдХреНрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкреГрд╖реНрда рдХрд╛ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реА рд╣реИ?

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

рдЫрд╡рд┐
рдЫрд╡рд┐

рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕- рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ -рд╡рд┐рде рд╣реИрдбрд░ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдкреГрд╖реНрда рд╕реЗ рдкреВрд░реНрдг рдПрдХ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдирд╣реАрдВ рдХрд╣рд╛:
 public abstract class ControllerBase : Controller { protected override void Execute(RequestContext requestContext) { //       Ajax{Something},     PartialView // ,       X-Requested-With,        / // , ,      . Boolean isAjaxRequest = requestContext.HttpContext.Request.QueryString["X-Requested-With"] != null; Boolean urlRequestPartialView = requestContext.HttpContext.Request.RawUrl.ToLower().Contains("ajax"); if ((urlRequestPartialView) && (!isAjaxRequest)) { String newUrl = requestContext.HttpContext.Request.RawUrl.ToLower().Replace("ajax", ""); requestContext.HttpContext.Response.Redirect(newUrl); } base.Execute(requestContext); } } 

рдЦреИрд░, рдХрдВрдЯреНрд░реЛрд▓рд░рдмреЗрд╕ рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рднреА рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


рдЖрдк c ifolder.ru рдпрд╛ zalil.ru рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЕрдЪреНрдЫрд╛ рдХреЛрдбрд┐рдВрдЧред

Source: https://habr.com/ru/post/In131556/


All Articles