ASP.NET MVC рдкрд╛рда 7. рдмреВрдЯрд╕реНрдЯреНрд░реИрдк, jQuery, Ajax

рдкрд╛рда рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп : html, js рдФрд░ css рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реАрдПрд╕рдПрд╕ред рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ред JQuery, рд╣рд╛рдЗрд▓рд╛рдЗрдЯреНрд╕, рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ, рдИрд╡реЗрдВрдЯреНрд╕ рдЖрджрд┐ рдХреА рдЦреЛрдЬ, AddClass, removeClass, attr, data, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдбреЛрдо рдСрдмреНрдЬреЗрдХреНрдЯ, ajax рдмрдирд╛рдирд╛ред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА asp.net mvc рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред


рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдФрд░ рд╕реАрдПрд╕рдПрд╕

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

рдпрд╣рд╛рдБ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
http://twitter.github.com/bootstrap/
рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
Install-Package Twitter.Bootstrap 


Jquery.UI рд╣рдЯрд╛рдПрдВ:
 Uninstall-Package Jquery.UI.Combined 


рдмрдВрдбрд▓рд╕реНрдЯреЛрдирдлрд┐рдЧ рдореЗрдВ рдмреВрдЯрд╕реНрдЯреИрдк рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ jquery.UI (App_Start / рдмрдВрдбрд▓рдХреЙрдиреНрдлрд┐рдЧ.рдХреНрд╕) рдирд┐рдХрд╛рд▓реЗрдВ:
 public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-1.*")); bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( "~/Scripts/modernizr-*")); bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( "~/Scripts/bootstrap*")); bundles.Add(new StyleBundle("~/Content/css") .Include("~/Content/site.css") /*    */ .Include("~/Content/bootstrap*")); } } 


рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:



рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рдо рдЯреИрдЧ, рдХрдХреНрд╖рд╛рдПрдВ (рдЫрджреНрдо-рдХрдХреНрд╖рд╛рдПрдВ), рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдЖрддрд╛ рд╣реИред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ !important рдирд╣реАрдВ рд╣реИ, рд╕рд╛рде рд╣реА рд╢реИрд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЖрдИрдбреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред
рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо css-file Site.css рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ (/Content/Site.css)
 /* Styles for validation helpers -----------------------------------------------------------*/ .field-validation-error { color: #f00; } .field-validation-valid { display: none; } .input-validation-error { border: 1px solid #f00; background-color: #fee; } .validation-summary-errors { font-weight: bold; color: #f00; } .validation-summary-valid { display: none; } 


рдпреЗ css рд╕реНрдЯрд╛рдЗрд▓ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ Html.ValidationMessage() , Html.ValidationSummary() рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рд╣рдо рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЕрдкрдиреА рд╢реИрд▓реА рдмрдирд╛рдПрдВрдЧреЗ:


HTML рдкреЗрдЬ рдХреА рд╕рдВрд░рдЪрдирд╛ред

рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореБрдЦреНрдп рд▓реЗрдЖрдЙрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ (/Areas/Default/Views/Sared/_Layout.cshtml):
 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> @Styles.Render("~/Content/css") @RenderSection("styles", required: false) @Scripts.Render("~/bundles/modernizr") </head> <body> <div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <ul class="nav nav-pills pull-right"> @Html.Action("UserLogin", "Home") </ul> </div> </div> </div> @RenderBody() @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false) </body> </html> 


рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
  1. рд╣рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣рдо рдорд╛рд░реНрдЧ / рдбрд┐рдлрд╝реЙрд▓реНрдЯ / рд╣реЛрдо / рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  2. рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ / рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдорд╛рдирдХ рджреГрд╢реНрдп рд╣реИ - /Home/Index.cshtml


рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 @{ ViewBag.Title = "LessonProject"; Layout = "~/Areas/Default/Views/Shared/_Layout.cshtml"; } 

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЗрдЖрдЙрдЯ @RenderBody() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:



рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╢рд░реАрд░ рдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреЗ рдиреАрдЪреЗ рдЪрд▓рд╛ рдЧрдпрд╛ред рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдмреЙрдбреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (/Content/Site.css):
 body { padding-top : 40px !important; } 



рдмрд╣реБрдд рдмреЗрд╣рддрд░ред

рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмреВрдЯрд╕реНрдЯреИрдк рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЕрдм рд╣рдорд╛рд░реЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдЖрдЗрдП рдЬрдиреНрдо рдХреА рддрд╛рд░реАрдЦ рддрдп рдХрд░реЗрдВ, Html .DropDownList () (/Areas/Default/Views/User/Register.cshtml) рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ:

 тАж <div class="controls"> @Html.DropDownList("BirthdateDay", Model.BirthdateDaySelectList, new { @class = "select-day" }) @Html.DropDownList("BirthdateMonth", Model.BirthdateMonthSelectList, new { @class = "select-month" }) @Html.DropDownList("BirthdateYear", Model.BirthdateYearSelectList, new { @class = "select-year" }) </div> 


рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рдФрд░ рд╣рдо рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рддрд┐рдерд┐ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рддрдереНрдп рдирд╣реАрдВ) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ (рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ) (/Content/Site.css) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ:

 .select-day { width : 50px; } .select-month { width : 90px; } .select-year { width : 70px; } 


рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:



Uiii!

рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛

рд╣рдо js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдХреЛрдб рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ jquery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдХрд╕реНрдЯрдо js рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рдЪрд▓реЛ рдЗрд╕реЗ /Scripts/common.js рдХрд╣рддреЗ рд╣реИрдВ) рд╣рдореЗрд╢рд╛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рдкреГрд╖реНрда рдкрд░ рдореМрдЬреВрдж рд╣реЛрдВрдЧреЗред рдЕрдиреНрдп js-files рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рднреНрд░рдорд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 2 рдлрд╝реЛрд▓реНрдбрд░ "рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ" рдФрд░ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" / рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрдирд╛рдПрдВрдЧреЗред

рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рд╣реЛрдВрдЧреЗ рдЬреЛ рд╕реНрдореЙрд▓рдХреИрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреГрд╖реНрда (рдЕрдзрд┐рдХрддрд░) рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: user-register.js - рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / Register.cshtml рдкреГрд╖реНрда рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдПрдЧреА:

 @section scripts { @Scripts.Render("/Scripts/default/user-register.js") } 


рдпрд╣ рдЕрдиреБрднрд╛рдЧ _Layout.cshtml (/Areas/Default/Views/Saring/_Layout.cshtml) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЬрдЧрд╣ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 тАж @Scripts.Render("~/bundles/bootstrap") @Scripts.Render("~/bundles/common") @RenderSection("scripts", required: false) </body> 


рдЗрд╕ рдмреАрдЪ /App_Start/BundleConfig.cs рдореЗрдВ, рдПрдХ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ:
  bundles.Add(new ScriptBundle("~/bundles/common").Include( "~/Scripts/common.js")); 


рд╕рднреА рдХрд╕реНрдЯрдо js рдХрдХреНрд╖рд╛рдПрдВ, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреА:
 function FunctionName() { _this = this; this.init = function () { /*       */ $("button").click(function () { var id = $(this).attr("id"); _this.saySomething(id); }); } /*   */ this.saySomething = function (id) { alert("-! : " + id); } /*    */ function saySomething (id) { alert("-!  !: " + id); } } var functionName = null; $().ready(function () { functionName = new FunctionName(); functionName.init(); }); 


рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
  1. function FunctionName рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдКрдкрд░реА рдирд╛рдо рдХрд╛ рд╕реНрдЯрд╛рдЗрд▓ рдирд╛рдо рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рдд рд╣реИ (рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдХреНрд░рдорд╢рдГ user.js рдФрд░ user-register.js)
  2. _this = this; рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рддрд╛рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ
  3. this.init() рдмрд╛рд╣рд░реА (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ) рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  4. var functionName = null - рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдмрдирд╛рдПрдБред рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдЙрдкрдпреЛрдЧ рд╕рдВрднрд╡ рд╣реИред
  5. $().ready() - DOM рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред JQuery рдлрд╝рдВрдХреНрд╢рдиред
  6. functionName = new FunctionName(); - рдПрдХ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
  7. functionName.init(); - рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред


рд░рд┐рд╕реЛрд░реНрд╕ рдлрд╛рдЗрд▓ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди


рдЪреВрдВрдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди рдлрд╛рдЗрд▓реЗрдВ рдмрдврд╝рддреА рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИ, рдПрдХ рдкреГрд╖реНрда рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ:


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


    рдФрд░ HTML рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ:
     <div class="label label-new sprite"></div> 

    рдФрд░ рд╕реАрдПрд╕рдПрд╕:
     .sprite { background: url("/Media/images/sprite.png"); overflow: hidden; text-indent: -9999px; } .box .label { position: absolute; width: 29px; right: -29px; top: 35px; } .box .label-new { background-position: 0 -15px; height: 119px; } 

  2. 2. рдмреЗрд╕ рдореЗрдВ рд╕реАрдзреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░рдХреЗ рд╕реАрдзреЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯреА рдЫрд╡рд┐рдпреЛрдВ (рдЖрдЗрдХрди) рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
    рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░ рдХреЛ рдмреЗрд╕ 64 рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, http://webcodertools.com/imagetobase64lexverter рдкрд░
    рдлрд┐рд░ рдЯрд╛рдЗрдк рдХрд░рдХреЗ css рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+/PlBqi0kAAAAwSURBVHjaYmBgYGBnghFccIIbRPCiEvwggg8LixfOBbN44AaACU4gZvgJIv4DBBgARTIDD2TeBRAAAAAASUVORK5CYII=); 



рдмреЗрд╢рдХ, рдЬрдм рд╕рд╛рдордЧреНрд░реА рдЖрдЗрдХрди рдпрд╛ рдЪрд┐рддреНрд░ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

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

рдиреНрдпреВрдирддрдордХрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Web.config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рди рдирд┐рд░реНрджреЗрд╢ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 <compilation debug="false" targetFramework="4.5" /> 


рдпрд╛ рд╕реАрдзреЗ /App_Start/BundleConfig.cs рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ:

 BundleTable.EnableOptimizations = true; 


рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:


527K рдЕрдиреБрдХреВрд▓рди рддрдХ



рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж, 251 KB

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

JQuery рд╕реНрдерд╛рдкрдирд╛
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, jquery рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рд╕реНрдерд╛рдкрд┐рдд-рдкреИрдХреЗрдЬ jQuery

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ JQueryUI ( http://jqueryui.com/ ) рдХреЛ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдСрдлрд░ рд╕реЗ рдбреЗрдЯрдХрд╛рд░рдХ, рдореЛрдбрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди JQueryUI рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдбреНрд░реИрдЧрдмрд▓, рдбреНрд░реЛрдкреЗрдмрд▓, рд░рд┐рдЬрдиреЗрдмрд▓, рд╕реЗрд▓реЗрдмрд▓ рдФрд░ рд╕реЙрд░реНрдЯреЗрдмрд▓ред рдЙрдиреНрд╣реЗрдВ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
  1. рдЪреВрдВрдХрд┐ Install-Package JQuery.UI.Interactions рдХреЛ jquery рд╕рдВрд╕реНрдХрд░рдг <1.6 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВрдЧреЗред
  2. Jqueryui.com/download рд╕реЗ рдХрд╕реНрдЯрдо рдбрд╛рдЙрдирд▓реЛрдб рдЪреБрдиреЗрдВ
  3. рд╣рдо рдХреЗрд╡рд▓ Core рдФрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ
  4. kachivaem
  5. рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ / рд╕рд╛рдордЧреНрд░реА / рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
  6. Js-files рдХреЛ / Scripts рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (jquery-1.9.1-min.js рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ)
  7. рд╣рдо рдмрдВрдбрд▓рдХреЙрдиреНрдлрд┐рдЧ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ
      bundles.Add(new ScriptBundle("~/bundles/jqueryui") .Include("~/Scripts/jquery-ui-1.*")); bundles.Add(new StyleBundle("~/Content/css/jqueryui") .Include("~/Content/jquery-ui-1*")); 

  8. рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред
  9. рд╣реЛ рдЧрдпрд╛!


рдлрд╛рдпрд░рдмрдЧ (рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕) рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ (рдХреНрд░реЛрдо)

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

рдЖрдЗрдП рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ:


рдЪрдпрдирдХрд░реНрддрд╛ рдФрд░ рдмрд╛рдпрдкрд╛рд╕

JQuery рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдПрдХ рд╕рд░рд▓ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

рд╕рдм рдХреБрдЫ рдХреЗ рджрд┐рд▓ рдореЗрдВ рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рд╣реИред рдЪрдпрдирдХрд░реНрддрд╛ рдЖрдкрдХреЛ DOM (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓) рдореЗрдВ рд╕реНрдерд┐рдд рдХрдИ рддрддреНрд╡реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдФрд░ рдЙрди рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ: рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛, рд╕реНрдерд╛рди рдмрджрд▓рдирд╛, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдирд╛, рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛, рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдпрд╛ html рдЬреЛрдбрд╝рдирд╛ред

рдореВрд▓ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:

$([тАЬ тАЭ][, ])

рдпрджрд┐ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ: $ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝)ред рдпрд╣ рд╕рдВрдкреВрд░реНрдг DOM рдХрд╛ рд░реВрдЯ рдиреЛрдб рд╣реИред
рдпрджрд┐ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдиреЛрдб рдХреА рд╕реАрдорд╛ рдкрд░ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрдпрдирдХрд░реНрддрд╛ рдирд┐рдпрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рддрддреНрд╡ рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЖрдк рд▓рдВрдмрд╛рдИ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 if($("#Id1").length == 0) { alert("  ") } 

рдЪрдпрдирд┐рдд рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдКрдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдлрд╝рдВрдХреНрд╢рди .closest (), .parent () рдпрд╛ .parents () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдШрдЯрдирд╛рдУрдВ


рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЪрдпрдирдХрд░реНрддрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдИрд╡реЗрдВрдЯ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 $(".button").click(function () { alert("Button clicked"); }); 

рдХреНрдпрд╛ рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ:


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

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

 $(document).on("click", ".button", function () { alert("Button clicked"); }); 


рдЧреБрдг рдФрд░ рдореВрд▓реНрдп


рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рдмреБрдирд┐рдпрд╛рджреА рдЬреЛрдбрд╝рддреЛрдбрд╝

рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


рдЕрдЬрд╛рдХреНрд╕

рдореБрдЦреНрдп рдФрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (99% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛)ред
 $.ajax({ type: "GET", url: "/ajaxUrl", data: { id: id }, beforeSend: function () { /* -   */ }, success: function (data) { /*   */ }, error: function () { /*   */ } }); 


рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдЖрдЗрдП рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


рдЕрдЬрд╛рдХреНрд╕-рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдоред

рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛, рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордпред рд╣рдо рджреВрд╕рд░рд╛ рд▓реЙрдЧрд┐рди рдлрд╝реЙрд░реНрдо рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рд╕рд╛рдЗрдЯ рдкрд░ рддреНрд╡рд░рд┐рдд рд▓реЙрдЧрд┐рди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред "рд▓реЙрдЧрд┐рди" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рд╣рдо рд▓реЙрдЧрд┐рди рдкреЗрдЬ рдкрд░ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рд▓реЙрдЧрд┐рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдкреЙрдк рдЕрдк рдХрд░рддреА рд╣реИред рдЧрд▓рдд рдЗрдирдкреБрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлреЙрд░реНрдо рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдлреЙрд░реНрдо / рд▓реЙрдЧрд┐рди рдкрд░ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдкреЙрдкрдк рд░реВрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдПрдХ рдорд╛рдирдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рдкреЙрдкрдЕрдк рдХреЛ рдЗрд╕ рддрд░рд╣ рдПрдХ рдкрддреЗ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВред рдЪреВрдБрдХрд┐ рдкреЙрдкрдЕрдк рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдБрдЧреЗ _Layout.cshtml (/Areas/Default/Views/Sared/_Layout.cshtml):
  <div id="PopupWrapper"></div> 


рд╕рд╛рдорд╛рдиреНрдп.js (/ рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдЕрд╕рд╛рдорд╛рдиреНрдп.js) рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ:
 this.showPopup = function (url, callback) { $.ajax({ type: "GET", url: url, success: function (data) { $(".modal-backdrop").remove(); var popupWrapper = $("#PopupWrapper"); popupWrapper.empty(); popupWrapper.html(data); var popup = $(".modal", popupWrapper); $(".modal", popupWrapper).modal(); callback(popup); } }); } 

рдЬрд╣рд╛рдБ .modal () bootstrap.js рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд╣реИред

рдЪреВрдБрдХрд┐ рд▓реЙрдЧрд┐рди рд╣рд░ рдкреГрд╖реНрда рдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рдореНрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ common.js рдореЗрдВ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
  this.init = function () { $("#LoginPopup").click(function () { _this.showPopup("/Login/Ajax", function (modal) { }); }); } 


рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ (/Areas/Default/Controller/LoginController.cs):
 [HttpGet] public ActionResult Ajax() { return View(new LoginView()); } [HttpPost] public ActionResult Ajax(LoginView loginView) { if (ModelState.IsValid) { var user = Auth.Login(loginView.Email, loginView.Password, loginView.IsPersistent); if (user != null) { return RedirectToAction("Index", "Home"); } ModelState["Password"].Errors.Add("  "); } return View(loginView); } 


рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рджреГрд╢реНрдп - "рдЕрдЬрд╛рдХреНрд╕" рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕реЗ рдмрдирд╛рдПрдВ (/Areas/Default/Views/Login/Ajax.cshtml):



 @model LessonProject.Models.ViewModels.LoginView <div class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">├Ч</button> <h3 id="myModalLabel">Login</h3> </div> <div class="modal-body"> @using (Html.BeginForm("Ajax", "Login", FormMethod.Post, new { @class = "form-horizontal", id = "LoginForm" })) { <fieldset> <legend></legend> <div class="control-group"> <label class="control-label" for="Email"> Email</label> <div class="controls"> @Html.TextBox("Email", Model.Email, new { @class = "input-xlarge" }) <p class="help-block"> Email</p> @Html.ValidationMessage("Email") </div> </div> <div class="control-group"> <label class="control-label" for="Password"> </label> <div class="controls"> @Html.Password("Password", Model.Password, new { @class = "input-xlarge" }) @Html.ValidationMessage("Password") </div> </div> </fieldset> } </div> <div class="modal-footer"> <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> <button class="btn btn-primary" id="LoginButton">Login</button> </div> </div> 


LoginForm рдлреЙрд░реНрдо рдХреА рдЖрдИрдбреА рдФрд░ LoginButton рдмрдЯрди рдХреА рдЖрдИрдбреА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

UserLogin.cshtml (/Areas/Default/Views/Home/UserLogin.cshtml) рдореЗрдВ рдХреЙрд▓ рдмрджрд▓реЗрдВ ред
  <li><span class="btn btn-link" id="LoginPopup"></span></li> 


рд╕рд╛рдорд╛рдиреНрдп .js рдореЗрдВ, рд▓реЙрдЧрд┐рдирдмрдЯрди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ, рдЬрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ $ ("# рд▓реЙрдЧрд┐рдирдмрдЯрди") рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (...) (/ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ / рдЕрд╕рд╛рдорд╛рдиреНрдп.рдЬреЗрдПрд╕):
 this.init = function () { $("#LoginPopup").click(function () { _this.showPopup("/Login/Ajax", initLoginPopup); }); } тАж function initLoginPopup(modal) { $("#LoginButton").click(function () { $.ajax({ type: "POST", url: "/Login/Ajax", data : $("#LoginForm").serialize(), success: function (data) { showModalData(data); initLoginPopup(modal); } }); }); } function showModalData(data, callback) { $(".modal-backdrop").remove(); var popupWrapper = $("#PopupWrapper"); popupWrapper.empty(); popupWrapper.html(data); var popup = $(".modal", popupWrapper); $(".modal", popupWrapper).modal(); if (callback != undefined) { callback(popup); } } 


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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЪрд╛рд▓ рдХрд░реЗрдВрдЧреЗред / рдХреНрд╖реЗрддреНрд░ / рдбрд┐рдлрд╝реЙрд▓реНрдЯ / рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ / _Ok.cshtml рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХрд╛ рд╕рд╛рд░ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ:
 <script> window.location.reload(); </script> 

рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдкрд░, рд╣рдо рдЗрд╕ рджреГрд╢реНрдп рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЛрдо рдЬреЛрдбрд╝рддреЗ рд╕рдордп
 popupWrapper.html(data); 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреНрдп рдХреЙрд▓ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдФрд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдЧреАред рдирд┐рдпрдВрддреНрд░рдХ рдмрджрд▓реЗрдВ (/Areas/Default/Controllers/LoginController.cs):
 var user = Auth.Login(loginView.Email, loginView.Password, loginView.IsPersistent); if (user != null) { return View("_Ok"); } 


рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдкрд░рд┐рдгрд╛рдо

рд╣рдордиреЗ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрд╢ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЖрдо рддреМрд░ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдореЗрдВ рд▓реЗрдЖрдЙрдЯ, рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдХреНрд░реЛрдо рдореЗрдВ рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдВред рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
http://jquery.com
http://habrahabr.ru/post/161895/
http://habrahabr.ru/post/154687/
http://twitter.github.com/bootstrap/
http://habrahabr.ru / рдкреЛрд╕реНрдЯ / 160177 /

рд╕рднреА рд╕реНрд░реЛрдд https://bitbucket.org/chernikov/lessons рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ

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


All Articles