рдкреЗрд╢ рд╣реИ ASP.NET MVC 4 рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ

рдпрд╣ рдЖрд▓реЗрдЦ ASP.NET MVC 4 рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рдереЗред

рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдм


рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдмрд╕реЗ рд╕реНрдерд┐рд░ рдФрд░ рдмрдврд╝рддреА рдкреНрд░рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдм рдХрд╛ рдЪрд▓рди рд╣реИред рд╕рд╛рдЗрдЯ рдХрд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЕрдм рдХреЗрд╡рд▓ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреИрд╕рд╛ рдХрдорд╛рдиреЗ рдФрд░ рджрд░реНрд╢рдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдзрди рд╣реИред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ ASP.NET MVC 4 рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдЗрдЯ рдХрд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдореЛрдмрд╛рдЗрд▓ рд╕рд╛рдЗрдЯ - рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг

рд╕рд╛рдЗрдЯ рдХрд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ ASP.NET MVC 4 рдореЗрдВ рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ред

рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ

ASP.NET MVC 4 рдиреЗ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛрдбрд╝рд╛, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╕рд╛рдЗрдЯ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ (рдЪрд┐рддреНрд░ 1) рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

image
рдЪрд┐рддреНрд░ 1ред рдирдпрд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рд╛рдЗрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ

рдПрдХ рдирдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЛрдмрд╛рдЗрд▓ рджреГрд╢реНрдп (рдЪрд┐рддреНрд░ 2) рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

image
рдЕрдВрдЬреАрд░ред 2. рдореЛрдмрд╛рдЗрд▓ рд╕рд╛рдЗрдЯ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ: рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдбреЗрдореЛ рдкреЗрдЬ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрдиред рдирдП рджреГрд╢реНрдп рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ jQuery рдХреЗ рдореЛрдмрд╛рдЗрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдЕрдм ASP.NET MVC рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдирдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдиреБрдХреВрд▓реА рд▓реЗрдЖрдЙрдЯ рдФрд░ рдирдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ

рд╕рд╛рдЗрдЯ рдХрд╛ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрдХреВрд▓реА рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред ASP.NET MVC 4 рдореЗрдВ, рдорд╛рдирдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдХреВрд▓реА рд▓реЗрдЖрдЙрдЯ (рдЪрд┐рддреНрд░рд╛ 3) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

image
рдЕрдВрдЬреАрд░ред 3. рдирдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ

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

image
image
imageimage
рдЕрдВрдЬреАрд░ред 5. рдЕрдиреБрдХреВрд▓реА рдорд╛рд░реНрдХрдЕрдк

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

ASP.NET MVC 4 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдиреБрдХреВрд▓реА рд▓реЗрдЖрдЙрдЯ рдирдП HTML5 рдФрд░ CSS3 рдорд╛рдирдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ CSS3 рдореАрдбрд┐рдпрд╛ рдХреНрд╡реЗрд░реА рдорд╛рдирдХ, рдЬреЛ рдЖрдкрдХреЛ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди CSS рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рдиред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: Site.css рд╢реИрд▓реА рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХреЛрдб рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ:

@media only screen and (max-width: 850px) { header .float-left, header .float-right { float: none; } тАж 

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

 <meta name="viewport" content="width=device-width"> 

рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред

рдЕрдиреБрдХреВрд▓реА рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЕрдиреНрдп рдирдП рдорд╛рдирдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рд╕реНрдирд╛рддрдХред

рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдПрдХ рдФрд░ рдмрджрд▓рд╛рд╡ рд▓реЙрдЧрд┐рди рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдкреНрд░рд╕реНрддреБрддрд┐рдпрд╛рдБ (рдЪрд┐рддреНрд░рд╛ 6) рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рд░реВрдкреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреА рд╢реБрд░реВрдЖрдд рдереАред

image
рдЕрдВрдЬреАрд░ред 6. рдкрдВрдЬреАрдХрд░рдг рдлреЙрд░реНрдо рд╡рд┐рдВрдбреЛ

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

image
рдЕрдВрдЬреАрд░ред 7. рдкрдВрдЬреАрдХрд░рдг рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдкреЗрдЬ

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирдИ AjaxLogin.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рдкрддреНрд░ рд╡рд┐рдВрдбреЛ рд╕реНрд╡рдпрдВ jQuery UI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдкреНрд░рджрд░реНрд╢рди рдореЛрдб

рдкрд╣рд▓реЗ рд╣рдордиреЗ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЗрди рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, ASP.NET MV 4 рдиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрддрд░ рдкрд░ рдПрдХ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рд╣реИ, рдЬрд┐рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдирдпрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЛрдб рдлреАрдЪрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реЛрдо рдкреЗрдЬ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪрдХрд╛рдВрдХ рджреГрд╢реНрдп рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ Views \ Home \ Index.cshtml рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░, рд╕рд╛рдЗрдЯ Views \ Home \ Index.mobile.cshtml рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЛрдмрд╛рдЗрд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдпрд╣ * .mobile.cshtml рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдмрд╛рдЗрд▓ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрд╕реА рддрд░рд╣, рдЖрдк _Layout.cshtml рдХреЗ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - _Layout.mobile.cshtml рдФрд░ рдЖрдВрд╢рд┐рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ: _MyPartial.cshtml - _MyPartial.obile.cshtmlред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк Global.asax рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Application_Start рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 DisplayModes.Modes.Insert(0, new DefaultDisplayMode("iPhone") { ContextCondition = (context => context.Request.UserAgent.IndexOf ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0) }); 

рдпрд╣ рдХреЛрдб рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ "iPhone" рджреГрд╢реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдЬреЗрдВрдЯ рд▓рд╛рдЗрди рдореЗрдВ "iPhone" рд▓рд╛рдЗрди рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ iPhone рдХреЗ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ Views \ Shared \ _Layout.iPhone.cshtml рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ

рдореЛрдмрд╛рдЗрд▓ рд╕рд╛рдЗрдЯ рдХреА рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдирдХ рдбреЗрд╕реНрдХрдЯреЙрдк рджреГрд╢реНрдп рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдореЛрдмрд╛рдЗрд▓ рд╕рд╛рдЗрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдХрднреА-рдХрднреА рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдирдХ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред

рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ASP.NET MVC 4 рдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрдВрддреНрд░ рдкреЗрд╢ рдХрд┐рдпрд╛: рдЪрд╛рд╣реЗ рд╡рд╣ рдорд╛рдирдХ рд╣реЛ рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдбред HttpContext рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЕрдм рдХрдИ рдирдП рддрд░реАрдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

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

рд╡реНрдпрдВрдЬрдиреЛрдВ


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

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред ASP.NET MVC 4 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ MvcHaack.ViewMoblizer рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NuGet рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗ рд╕рднреА рдпрд╛ рдЪрдпрдирд┐рдд рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреБрд╕реНрдЦрд╛ рд╣реИред

рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рджреГрд╢реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ, Add - Run Recipie (рдЪрд┐рддреНрд░ 8) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

image
рдЕрдВрдЬреАрд░ред 8. рдиреБрд╕реНрдЦрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╡реНрдпрдВрдЬрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА (рдЪрд┐рддреНрд░ 9)ред

image
рдЕрдВрдЬреАрд░ред 9. рдиреБрд╕реНрдЦрд╛ рдЪрдпрди рдЦрд┐рдбрд╝рдХреА

Mobilizer рдиреБрд╕реНрдЦрд╛ рджреЗрдЦреЗрдВ рдФрд░ рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдПрдХ рдЖрдВрддрд░рд┐рдХ рдиреБрд╕реНрдЦрд╛ рддрдВрддреНрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реВрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг (рдЪрд┐рддреНрд░ 10) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

image
рдЕрдВрдЬреАрд░ред 10. рдиреБрд╕реНрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЦрд┐рдбрд╝рдХреА

рдЗрдЪреНрдЫрд┐рдд рджреГрд╢реНрдп рдЪреБрдиреЗрдВ рдФрд░ Mobilize рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ! рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, iPhone) рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреБрд╕реНрдЦрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ (рдЪрд┐рддреНрд░ 11)ред

image
рдЕрдВрдЬреАрд░ред 11. рдкрдХрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ

рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рд░реЗрд╕рд┐рдкреА

рд░реЗрд╕рд┐рдкреА рдПрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░реЗрд╕рд┐рдкреА рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд░реЗрд╕рд┐рдкреА рдХреНрд▓рд╛рд╕ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред

рд╡реНрдпрдВрдЬрдиреЛрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: IRecipe, IFolderRecipe, IFileRecipe, рдЬрд┐рдиреНрд╣реЗрдВ рдирдП Microsoft рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред VisualStudio.Web.Mvc.Extensibility .ecipes рдирд╛рдорд╕реНрдерд╛рдиред

рд░реЗрд╕рд┐рдкреА рдХреНрд▓рд╛рд╕ рдХреЛ MEF рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, рдЗрд╕реЗ [Export (рдЯрд╛рдЗрдкреЛрдлрд╝ (IRecipe))) рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд▓ рд╣реИрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╡реНрдпреВ рдореЛрдмрд┐рд▓рд╛рдЗрдЬрд╝рд░ рд░реЗрд╕рд┐рдкреА рдХреНрд▓рд╛рд╕ рд╣реИ:

 [Export(typeof(IRecipe))] public class ViewMobilizerRecipe : IFolderRecipe { public bool Execute(ProjectFolder folder) { var model = new ViewMobilizerModel(folder); var form = new ViewMobilizerForm(model); var result = form.ShowDialog(); if (result == DialogResult.OK) { foreach (var view in model.SelectedViews) { var file = view.Item1; string mobileFileName = view.Item2; File.Copy(file.FullName, mobileFileName); folder.DteProjectItems.AddFromFile(mobileFileName); } } return true; } public bool IsValidTarget(ProjectFolder folder) { return true; } public string Description { get { return "A package for creating display mode views."; } } public Icon Icon { get { return Resources.ViewMobilizer; } } public string Name { get { return "View Mobilizer"; } } } 

рд╡реНрдпрдВрдЬрдиреЛрдВ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирдпрд╛ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ NuGet рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕рдВрдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╕рдореБрджрд╛рдп рдФрд░ NuGet рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрдИ рд╣реЛрдВрдЧреЗред

рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП Async рд╕рдорд░реНрдерди


рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ ASP.NET MVC рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ C # рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 public async Task<ActionResult> Index(string city) { var newsService = new NewsService(); var sportsService = new SportsService(); return View("Common", new PortalViewModel { NewsHeadlines = await newsService.GetHeadlinesAsync(), SportsScores = await sportsService.GetScoresAsync() }); } 

рдирдП async рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╡реЗ рдЗрд╕ рдХреЛрдб рдХреЛ newsService.GetHeadlinesAsync рдФрд░ sportsService.GetScoresAsync рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

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

[AsyncTimeout (2500)]

рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рд╡рд┐рд╢реЗрд╖ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓реЗрдпрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

[рд╣реИрдВрдбрд▓реЗрдпрд░ (рдЕрдкрд╡рд╛рдж рдЯрд╛рдЗрдк = рдЯрд╛рдЗрдкрдСрдлрд╝ (рдЯрд╛рд╕реНрдХрдХреИрдиреНрд▓реЗрдбрд╕реЗрдкреНрд╢рди), рджреЗрдЦреЗрдВ = "рдЯрд╛рдЗрдордореЗрдбрдСрди")]

рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдордСрдЯ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 [AsyncTimeout(2500)] [HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")] public async Task<ActionResult> Index(string city, CancellationToken cancellationToken) { var newsService = new NewsService(); var sportsService = new SportsService(); return View("Common", new PortalViewModel { NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken), SportsScores = await sportsService.GetScoresAsync(cancellationToken) }); } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рди (рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг) рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


рдкрд╣рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд ASP.NET MVC 4 рдХреЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЕрднреНрдпрд╛рд╡реЗрджрди рдмрдирд╛рдиреЗ рдФрд░ рдХрдИ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЗрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рд╣реИред

рджреВрд╕рд░реА рдУрд░, рд╡реНрдпрдВрдЬрдиреЛрдВ MEF рдФрд░ NuGet рдХреЗ рдкрд░рд┐рдЪрд┐рдд рддрдВрддреНрд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдПрдХ рдирдП рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП C # 5 рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬрдЯрд┐рд▓ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред

рд╣рдордиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ ASP.NET MVC 4 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рдХрд╛рд░реНрдп рдорд┐рд▓реЗрдВрдЧреЗред

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


All Articles