{"id":214963,"date":"2014-03-07T12:08:03","date_gmt":"2014-03-07T08:08:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=214963"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=214963","title":{"rendered":"<span class=\"post_title\">IML TODO<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/27d\/210\/ba8\/27d210ba8f21f85641c982fd89c4722a.jpg\" alt=\"image\"\/><br \/>  <b>disclaimer<\/b>: \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 ( \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0443\u0448\u0438\u043b\u0430\u0441\u044c \u043d\u0430 <a href=\"http:\/\/habrahabr.ru\/post\/214293\/\">\u0445\u0430\u0431\u0440\u0435 <\/a>), \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b IML \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f <a href=\"http:\/\/todomvc.com\/\">ToDo MVC<\/a>.<\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0443\u043c\u0430\u043a\u043e\u0432<\/h4>\n<p>  \u041a\u0440\u0438\u0442\u0438\u043a\u0430 \u2013 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u044f\u0433\u043a\u043e\u0435 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043a \u043c\u043e\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0438\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 ( \u043d\u0430 \u0444\u043e\u0442\u043e \u0442\u043e\u043f \u0431\u0440\u0435\u0434\u043e\u0432\u044b\u0445 ), \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435:  <\/p>\n<ul>\n<li><b>\u041a\u043e\u0434 \u043d\u0430 AngularJs \u043d\u0435 \u0444\u043e\u043d\u0442\u0430\u043d<\/b> \u2014 \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c, \u0445\u043e\u0442\u044f \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430<\/li>\n<li><b>\u0421\u043b\u0430\u0431\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/b> \u2013 \u0443\u043f\u043e\u0440 \u0431\u044b\u043b \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u043d\u0435 \u043d\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0443\u0441\u044c \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b ( \u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043d\u0430 open source, \u043d\u043e \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u0435\u0437 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f )<\/li>\n<li><b>\u041d\u0435 \u0437\u043d\u0430\u0435\u0448\u044c AngularJs ?<\/b> \u2013 \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0435\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 AngularJs<\/li>\n<li><b>\u0422\u043e\u043f\u0438\u043a JS<\/b> \u2013 \u044d\u0442\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f asp.net mvc, \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 TextBoxFor \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. <\/li>\n<\/ul>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 ToDo ?<\/h4>\n<p>  \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201cTodo MVC\u201d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 IML \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0412\u043e \u043f\u0435\u0440\u0432\u044b\u0445 <a href=\"http:\/\/todo.incframework.com\">demo<\/a> \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u0435 \u043e\u0442 \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f js framework, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435 local storage, \u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/github.com\/IncodingSoftware\/inc-todo\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u0432 \u043f\u043e\u0441\u0442\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0441\u0442\u0440\u043e\u0438\u043b \u0432\u0441\u044e \u043b\u043e\u0433\u0438\u043a\u0443 ( \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u043f\u043e\u0434\u0432\u0430\u043b\u0430, \u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442.\u0434. ) \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0445\u043e\u0442\u044f \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u043f\u0440\u043e\u0449\u0435 ( \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e ) \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u201c\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u201d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044f IML \u043a\u043e\u0434, \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a \u0441\u0435\u0431\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c.<\/p>\n<h4>Code review<\/h4>\n<p>  \u0421\u0442\u0438\u043b\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c (\u0438\u043d\u0430\u0447\u0435 \u043e\u0431\u044a\u0435\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043c ), \u0430 \u043e\u0431\u0437\u043e\u0440 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f todo. \u042f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432\u044b\u0448\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 IML \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043d\u043e \u0432 \u0446\u0435\u043b\u044f\u0445 \u0443\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0418\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442<\/h4>\n<p>  \u041a\u043e\u0434 \u0431\u044b\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d \u043d\u0430 3 View  <\/p>\n<ul>\n<li><b>Index <\/b> \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 ( \u0438 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 )<\/li>\n<li><b>Todo_List_Tmpl<\/b> \u2013 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430<\/li>\n<li><b>Todo_Footer_Tmpl<\/b> \u2013 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0432\u0430\u043b\u0430 \u0441 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438<\/li>\n<\/ul>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/0e9\/e3e\/3f0\/0e9e3e3f020f9c79887570c846c5d4be.png\" alt=\"image\"\/><\/p>\n<h5>Index ( \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 )<\/h5>\n<p>  <\/p>\n<h6>\u0424\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f TODO<\/h6>\n<p>  <\/p>\n<pre><code class=\"cs\">@using (Html.When(JqueryBind.Submit)             .DoWithPreventDefault()             .Submit(options =&gt;                    {        options.Url = Url.Dispatcher()                      .Push(new AddTodoCommand {  ClientId = Selector.Incoding.Cookie(CookieManager.ClientId) });                    })             .OnSuccess(dsl =&gt;                            {                                dsl.WithId(containerId).Core().Trigger.Incoding();                                dsl.Self().Core().Form.Reset();                            })             .AsHtmlAttributes()             .ToBeginTag(Html, HtmlTag.Form)) {     @Html.TextBoxFor(r =&gt; r.Title, new { placeholder = &quot;What needs to be done?&quot;, autofocus = &quot;&quot; }) } <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0441\u0440\u0430\u0437\u0443 \u043e\u0436\u0438\u0434\u0430\u044e \u0444\u0440\u0430\u0437\u044b \u0432 \u0441\u0442\u0438\u043b\u0435 \u201c\u0414\u0430, \u043d\u0443 \u044d\u0442\u043e \u043d\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e, \u043a\u043e\u0434\u0430 \u0432 \u0440\u0430\u0437\u044b \u0431\u043e\u043b\u044c\u0448\u0435, \u043d\u0430\u0434\u043e \u0432\u0435\u0437\u0434\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438 \u043a\u0430\u043a \u043b\u044e\u0434\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 !!!\u201d \u2014 \u043d\u0430 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 \u043b\u0438\u0446\u0435 C# extensions, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 IML. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 ( \u0442\u0430\u043a\u0436\u0435 repository \u043d\u0430 <a href=\"https:\/\/github.com\/IncodingSoftware\/inc-todo-refactor\">GibHub <\/a>\u0441 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c ) \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c C# extensions <\/i>  <\/p>\n<h6>\u0427\u0442\u043e \u043a \u0447\u0435\u043c\u0443 ?<\/h6>\n<p>  <\/p>\n<ul>\n<li><b>When(JqueryBind.Submit)<\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435<\/li>\n<li><b>DoWithPreventDefault <\/b> \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f ( \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 )<\/li>\n<li><b>Submit <\/b> \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 ajax<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0430\u0440\u0443 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u043f\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<\/i><br \/> \n<ul>\n<li><b>Url <\/b>\u043a\u0443\u0434\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u043f\u0446\u0438\u044f\u0445 ( \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 action \u0443 form )<\/li>\n<li><b>ClientId <\/b>\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0444\u043e\u0440\u043c\u0443, \u043a\u0430\u043a Hidden, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e InitIncoding \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 Cookies, \u0447\u0442\u043e \u0431\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c Submit \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>OnSuccess <\/b> \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f submit<br \/> \n<ul>\n<li><b>Trigger Incoding to containerId<\/b> \u2013 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0441\u044c IML \u043a\u043e\u0434 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 Container ( \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 )<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e When, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f ( \u0441 \u0440\u0430\u0437\u043d\u044b\u043c IML \u043a\u043e\u0434\u043e\u043c ), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 trigger Incoding \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0441\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438.<\/i>  <\/li>\n<li><b>Form reset <\/b> \u2013 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u043e\u0440\u043c\u044b  <\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>AsHtmlAttributes<\/b> \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c IML \u043a\u043e\u0434 \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f asp.net mvc \u0444\u043e\u0440\u043c\u0430\u0442 ( RouteValueDictionary )<\/li>\n<li><b>ToBeginTag <\/b> \u2014 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0442\u044d\u0433 form ( \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043a Html.BeginForm )<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>Html.BeginForm(\u201caction\u201d,\u201dcontroller\u201d,Post,iml.AsHtmlAttributes())<\/code><\/i>  <\/li>\n<\/ul>\n<p>  <\/p>\n<h6>\u0424\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f TODO ( \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 )<\/h6>\n<p>  <\/p>\n<pre><code class=\"cs\">@using (Html.Todo().BeginForm(setting =&gt;                              {                     setting.TargetId = containerId;                     setting.Routes = new { ClientId = Selector.Incoding.Cookie(CookieManager.ClientId) };                              })) {     @Html.TextBoxFor(r =&gt; r.Title, new { placeholder = &quot;What needs to be done?&quot;, autofocus = &quot;&quot; }) } <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043a\u043e\u0434\u0430 \u0441\u0442\u0430\u043b\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u0447\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c ( \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f, redirect \u043f\u043e\u0441\u043b\u0435 submit \u0438 \u0442.\u0434. ) \u043c\u0435\u0442\u043e\u0434, \u043f\u043e\u0434 \u043d\u0443\u0436\u0434\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/i>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">public class BeginFormSetting {     public string TargetId { get; set; }       public object Routes { get; set; } }   public BeginTag BeginForm(Action configure) {     var setting = new BeginFormSetting();     configure(setting);       var url = new UrlHelper(HttpContext.Current.Request.RequestContext);     return this.helper.When(JqueryBind.Submit)                .DoWithPreventDefault()                .Submit(options =&gt;                            {                                options.Url = url.Dispatcher()                                                 .Push(setting.Routes);                            })                .OnSuccess(dsl =&gt;                               {                                   dsl.WithId(setting.TargetId).Core().Trigger.Incoding();                                   dsl.Self().Core().Form.Reset();                               })                .AsHtmlAttributes()                .ToBeginTag(this.helper, HtmlTag.Form); } <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043a\u043e\u0434 \u0437\u043d\u0430\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 asp.net mvc \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u201c\u043e\u0431\u044b\u0447\u043d\u044b\u0445\u201d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.<\/i>  <\/div>\n<\/div>\n<h5>Container<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">@(Html.When(JqueryBind.InitIncoding | JqueryBind.IncChangeUrl)       .Do()       .AjaxGet(Url.Dispatcher()                   .Query(new                          {                    ClientId = Selector.Incoding.Cookie(CookieManager.ClientId),                    Type = Selector.Incoding.HashQueryString(r =&gt; r.Type)                          })                   .AsJson())       .OnSuccess(dsl =&gt;                      {                          string urlTmpl = Url.Dispatcher()                                              .Model(new GetTodoByClientQuery.Tmpl { FooterId = footerId })                                              .AsView(&quot;~\/Views\/Home\/Todo_List_Tmpl.cshtml&quot;);                          dsl.Self().Core().Insert.WithTemplateByUrl(urlTmpl).Html();                          dsl.WithId(footerId).Core().Trigger.Incoding();                      })       .AsHtmlAttributes(new { id = containerId })       .ToDiv()) <\/code><\/pre>\n<p>  <\/p>\n<h6>\u0427\u0442\u043e \u043a \u0447\u0435\u043c\u0443 ?<\/h6>\n<p>  <\/p>\n<ul>\n<li><b>When(JqueryBind.InitIncoding | IncChangeUrl)<\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<br \/> \n<ul>\n<li><b>InitIncoding <\/b>\u2013 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 ( \u043d\u0435 \u0432\u0430\u0436\u043d\u043e ajax \u0438\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u043e )<\/li>\n<li><b>IncChangeUrl<\/b> \u2013 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 hash<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>Do<\/b> \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/li>\n<li><b>AjaxGet <\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c url, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d ajax \u0437\u0430\u043f\u0440\u043e\u0441<br \/> \n<ul>\n<li>ClientId \u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 cookies<\/li>\n<li>Type \u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 Hash Query String<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>OnSuccess <\/b> \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f AjaxGet<br \/> \n<ul>\n<li><b>Insert data to self by template<\/b> \u2013 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 ( json ) \u0447\u0435\u0440\u0435\u0437 template ( Todo_List_Tmpl \u043d\u0438\u0436\u0435 ) \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: template \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 Selector, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u043d\u044c\u0448\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0431\u044b\u043b Jquery.Id, \u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043e ajax \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0439<\/i>   <\/li>\n<li><b>Trigger incoding to footerId <\/b>\u2013 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0441\u044c IML \u043a\u043e\u0434 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 footer ( \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 )   <\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>AsHtmlAttributes<\/b> \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c IML \u043a\u043e\u0434 \u0438 \u0437\u0430\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 containerId ( guid ) \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 Id<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 guid \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 Id \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f single page application<\/i>  <\/li>\n<li><b>ToDiv <\/b> \u2014 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0442\u044d\u0433 div<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: ToDiv \u044d\u0442\u043e C# extensions \u043d\u0430\u0434 RouteValueDictionary, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0443\u0436\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <\/i>  <\/li>\n<\/ul>\n<p>  <\/p>\n<h6>Container ( \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 )<\/h6>\n<p>  <\/p>\n<pre><code class=\"cs\">@Html.Todo().Container(setting =&gt;              {                  setting.Id = containerId;                  setting.Url = Url.Dispatcher()                                   .Query(new                                                 {                                                         ClientId = Selector.Incoding.Cookie(CookieManager.ClientId),                                                         Type = Selector.Incoding.HashQueryString(r =&gt; r.Type)                                                 })                                   .AsJson();                  setting.Tmpl = Url.Dispatcher()                                    .Model(new GetTodoByClientQuery.Tmpl { FooterId = footerId })                                    .AsView(&quot;~\/Views\/Home\/Todo_List_Tmpl.cshtml&quot;);                  setting.DependencyId = footerId;              }) <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0441\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c block ui \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e<\/i>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">public class ContainerSetting {     public string Id { get; set; }       public string Url { get; set; }       public string Tmpl { get; set; }       public string DependencyId { get; set; } }   public MvcHtmlString Container(Action configure) {     var setting = new ContainerSetting();     configure(setting);       return helper.When(JqueryBind.InitIncoding | JqueryBind.IncChangeUrl)                  .Do()                  .AjaxGet(setting.Url)                  .OnSuccess(dsl =&gt;                                 {                                     dsl.Self().Core().Insert.WithTemplateByUrl(setting.Tmpl).Html();                                     dsl.WithId(setting.DependencyId).Core().Trigger.Incoding();                                 })                  .AsHtmlAttributes(new { id = setting.Id })                  .ToDiv(); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h5>Footer<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">@(Html.When(JqueryBind.None)       .Do()       .Direct(new FooterVm                         {                          AllCount = Selector.Jquery.Class(&quot;toggle&quot;).Length(),                          IsCompleted = Selector.Jquery.Class(&quot;toggle&quot;).Is(JqueryExpression.Checked),                          CompletedCount = Selector.Jquery.Class(&quot;toggle&quot;)                                                          .Expression(JqueryExpression.Checked)                                                          .Length(),                         }))       .OnSuccess(dsl =&gt;                      {                          string urlTmpl = Url.Dispatcher()                                              .Model(new TodoFooterTmplVm                                                         {                                                                 ContainerId = containerId                                                         })                                              .AsView(&quot;~\/Views\/Home\/Todo_Footer_Tmpl.cshtml&quot;);                          dsl.Self().Core().Insert.Prepare().WithTemplateByUrl(urlTmpl).Html();                      })       .AsHtmlAttributes(new { id = footerId })       .ToDiv()) <\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li><b>When(JqueryBind.None) <\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<br \/> \n<ul>\n<li><b>None<\/b> \u2013 When \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0443 \u201cMySpecialEvent\u201d, \u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e.<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>Do<\/b> \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/li>\n<li><b>Direct <\/b> \u2014 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a action \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\n<ul>\n<li><b>AllCount <\/b>\u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043b-\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u201ctoggle\u201d<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c Method ( \u0432\u043c\u0435\u0441\u0442\u043e Length ), \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 jquery \u043c\u0435\u0442\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c C# extensions \u043d\u0430\u0434 JquerySelectorExtend<\/i>  <\/li>\n<li><b>IsCompleted <\/b> \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u201ctoggle\u201d<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043a\u043e\u043c\u0443 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 jquery selector, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0441\u044f Selector.Jquery.Custom(\u201cyour jquery selector\u201d)<\/i>  <\/li>\n<li><b>CompletedCount <\/b>\u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u201ctoggle\u201d<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>OnSuccess <\/b> \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f AjaxGet<br \/> \n<ul>\n<li><b>Insert prepare data to self by template<\/b> \u2014 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 ( prepare ) \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Direct \u0447\u0435\u0440\u0435\u0437 template ( Todo_Footer_Tmpl \u043d\u0438\u0436\u0435 ) \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442<\/li>\n<\/ul>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: prepare \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u044f\u0445.<\/i>  <\/li>\n<li><b>AsHtmlAttributes <\/b> \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c IML \u043a\u043e\u0434<\/li>\n<li><b>ToDiv <\/b> \u2014 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0442\u044d\u0433 div<\/li>\n<\/ul>\n<h5>Todo List Tmpl<\/h5>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 todo  <\/p>\n<pre><code class=\"cs\">@using (var template = Html.Incoding().Template()) {  &lt;ul&gt;   @using (var each = template.ForEach())     {     @using (each.Is(r =&gt; r.Active))      { @createCheckBox(true) }     @using (each.Not(r =&gt; r.Active))     { @createCheckBox(false) }       &lt;li class=&quot;@each.IsInline(r=&gt;r.Active,&quot;completed&quot;)&quot;&gt;       &lt;label&gt;@each.For(r=&gt;r.Title)&lt;\/label&gt;     &lt;\/li&gt; &lt;\/ul&gt; } <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u0435 ( \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 ), \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f template<\/i><\/p>\n<h6>\u0427\u0442\u043e \u043a \u0447\u0435\u043c\u0443 ?<\/h6>\n<p>  <\/p>\n<ul>\n<li><b>Html.Incoding().Template()<\/b> \u2013 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 ( \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 using ) \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f template<\/li>\n<li><b>template.ForEach()<\/b> \u2014 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440 ( \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 using ) \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/li>\n<li><b>using(each.Is(r=&gt;r.Active))<\/b> \u2014 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0431\u044b\u043b \u0432 \u201c\u043e\u0434\u043d\u0443 \u043b\u0438\u043d\u0438\u044e\u201d, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/li>\n<li> <b>createCheckBox <\/b> \u2014 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u0430\u044f C# \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f checkbox ( \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 ) <\/li>\n<li><b>each.IsInline(r=&gt;r.Active,\u201dcompleted\u201d)<\/b> \u2014 \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0435 Active true, \u0442\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u201ccompleted\u201d<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f IsNotLine \u0438 IsLine. <\/i>  <\/li>\n<li><b>each.For(r =&gt; r.Title) <\/b>\u2013 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f Title<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u043e\u043b\u044f\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 ( \u0434\u0430, \u044f \u043e\u043f\u044f\u0442\u044c \u043e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 )<\/i>  <\/li>\n<\/ul>\n<h4>\u0414\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b<\/h4>\n<p>  <\/p>\n<h5>Button del<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">@(Html.When(JqueryBind.Click)       .Do()       .AjaxPost(Url.Dispatcher().Push(new DeleteEntityByIdCommand                                  {                                          Id = each.For(r =&gt; r.Id),                                          AssemblyQualifiedName = typeof(Todo).AssemblyQualifiedName                                  }))       .OnBegin(r =&gt;                    {                        r.WithSelf(s =&gt; s.Closest(HtmlTag.Li)).Core().JQuery.Manipulation.Remove();                        r.WithId(Model.FooterId).Core().Trigger.Incoding();                        r.WithId(toggleAllId).Core().Trigger.None();                    })       .AsHtmlAttributes(new { @class = &quot;destroy&quot; })       .ToButton(&quot;&quot;)) <\/code><\/pre>\n<p>  <\/p>\n<h6>\u0427\u0442\u043e \u043a \u0447\u0435\u043c\u0443 ?<\/h6>\n<p>  <\/p>\n<ul>\n<li><b>When(JqueryBind.Click)<\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435<\/li>\n<li><b>Do <\/b> \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/li>\n<li><b>AjaxPost<\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c Url, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u043c ajax \u0437\u0430\u043f\u0440\u043e\u0441<br \/> \n<ul>\n<li><b>Id<\/b> \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 Todo<\/li>\n<li><b>AssemblyQualifiedName<\/b> \u2013 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u043c\u044f \u0442\u0438\u043f\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 ( \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 C# \u043a\u043e\u0434 )<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>OnBegin<\/b> \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f ( AjaxPost )<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c OnSuccess, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 ( timeout \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435 ) \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e OnBegin \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e \u0432\u044b\u0437\u043e\u0432\u0430 AjaxPost, \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u044b TodoMVC \u043d\u0430 js framework \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 local storage ( \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c ajax ) \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u0441\u0445\u0438\u0442\u0440\u0438\u043b, \u0434\u0430 \u0431\u044b \u043d\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u044c \u0432 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435<\/i><br \/> \n<ul>\n<li><b>Remove closest LI<\/b> \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 LI<\/li>\n<li><b>Trigger incoding to footer id<\/b> \u2013 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0441\u044c IML \u043a\u043e\u0434 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 footer ( \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u044b\u0448\u0435 )<\/li>\n<li><b>Trigger none to toggle all<\/b> \u2013 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c IML \u043a\u043e\u0434 ( \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 None ) \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 Toggle All ( \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 )<\/li>\n<\/ul>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0441\u043b\u0438 \u0431\u044b \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 ( footer \u0438 toggle all ) \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 trigger, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/i>  <\/p>\n<pre><code class=\"cs\">dsl.WithId(Model.FooterId, toggleAllId).Core().Trigger.Incoding(); <\/code><\/pre>\n<p>  <\/li>\n<li><b>AsHtmlAttributes <\/b> \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c IML \u043a\u043e\u0434<\/li>\n<li><b>ToButton<\/b> \u2014 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0442\u044d\u0433 button<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: ToButton \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0438 \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 CSS<\/i>  <\/li>\n<\/ul>\n<h5>Button Del ( \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 )<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">@Html.Todo().Verb(setting =&gt;        {            setting.Url = Url.Dispatcher().Push(new DeleteEntityByIdCommand                                                    {                                                            Id = each.For(r =&gt; r.Id),                                                            AssemblyQualifiedName = typeof(Todo).AssemblyQualifiedName                                                    });            setting.OnBegin = dsl =&gt;                                  {                                      dsl.WithSelf(s =&gt; s.Closest(HtmlTag.Li)).Core().JQuery.Manipulation.Remove();                                      dsl.WithId(Model.FooterId).Core().Trigger.Incoding();                                      dsl.WithId(toggleAllId).Core().Trigger.None();                                  };            setting.Attr = new { @class = &quot;destroy&quot; };        }) <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: OnBegin \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 Action, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448 extensions \u0432\u043d\u0435\u0434\u0440\u044f\u044f \u0432 \u043d\u0435\u0433\u043e IML. ( \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0443\u0442 \u0435\u0449\u0451 \u043f\u0440\u0438\u043c\u0435\u0440\u044b )<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\"> public class VerbSetting {     public string Url { get; set; }       public Action&lt;IIncodingMetaLanguageCallbackBodyDsl&gt; OnBegin { get; set; }       public Action&lt;IIncodingMetaLanguageCallbackBodyDsl&gt; OnSuccess { get; set; }       public object Attr { get; set; }       public string Content { get; set; } }  public MvcHtmlString Verb(Action&lt;VerbSetting&gt; configure) {     var setting = new VerbSetting();     configure(setting);       return this.helper.When(JqueryBind.Click)                .Do()                .AjaxPost(setting.Url)                .OnBegin(dsl =&gt;                             {                                 if (setting.OnBegin != null)                                     setting.OnBegin(dsl);                             })                .OnSuccess(dsl =&gt;                               {                                   if (setting.OnSuccess != null)                                       setting.OnSuccess(dsl);                               })                .AsHtmlAttributes(setting.Attr)                .ToButton(setting.Content); } <\/code><\/pre>\n<p>  <i> \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u0443 Verb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0438\u0445 \u043d\u0430 null, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/i>  <\/div>\n<\/div>\n<h5> Checkbox Completed<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">var createCheckBox = isValue =&gt; Html.When(JqueryBind.Change)                                     .Do()                                     .AjaxPost(Url.Dispatcher().Push(new ToggleTodoCommand                                                                  {                                                                      Id = each.For(r =&gt; r.Id)                                                                  }))                                     .OnBegin(dsl =&gt;                                                   {                                                    dsl.WithSelf(r =&gt; r.Closest(HtmlTag.Li))                                                       .Behaviors(inDsl =&gt;                                                                      {                       inDsl.Core().JQuery.Attributes.RemoveClass(&quot;completed&quot;);                       inDsl.Core().JQuery.Attributes.AddClass(&quot;completed&quot;)                                  .If(builder =&gt; builder.Is(() =&gt; Selector.Jquery.Self()));                                                                      });                                                       dsl.WithId(Model.FooterId).Core().Trigger.Incoding();                                                     dsl.WithId(toggleAllId).Core().Trigger.None();                                                    })                                      .AsHtmlAttributes(new {@class=&quot;toggle&quot; })                                      .ToCheckBox(isValue); <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 razor \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0435 C# \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 Razor helper, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.<\/i>  <\/p>\n<h6>\u0427\u0442\u043e \u043a \u0447\u0435\u043c\u0443 ?<\/h6>\n<p>  <\/p>\n<ul>\n<li>When(JqueryBind.Change) \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435<\/li>\n<li>Do \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/li>\n<li>AjaxPost \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c Url, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u043c ajax \u0437\u0430\u043f\u0440\u043e\u0441<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: AjaxPost \u0438 AjaxGet \u044d\u0442\u043e \u201c\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f\u201d \u0432\u0435\u0440\u0441\u0438\u044f Ajax, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/i>  <\/li>\n<li>OnBegin \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f ( AjaxPost )<br \/> \n<ul>\n<li><b>Remove class on closest LI<\/b> \u2013 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u201ccompleted\u201d \u0443 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e LI<\/li>\n<li><b>Add class on closest LI if self is true<\/b> \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u201ccompleted\u201d<\/li>\n<\/ul>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u043e\u043a\u0430 \u0432 IML \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c else, \u043d\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 2.0 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/i>  <\/li>\n<li>AsHtmlAttributes \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c IML \u043a\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u201ctoggle\u201d \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 class<\/li>\n<li>ToCheckBox \u2014 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0442\u044d\u0433 input[type=checkbox]<\/li>\n<\/ul>\n<h5>Filter by type todo<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">@{     const string classSelected = &quot;selected&quot;;     var createLi = (typeOfTodo,isFirst) =&gt; Html.When(JqueryBind.InitIncoding)                               .Do()                               .Direct()                               .OnSuccess(dsl =&gt;                                                            {       var type = Selector.Incoding.HashQueryString(r =&gt; r.Type);         if (isFirst)       dsl.Self().Core().JQuery.Attributes.AddClass(classSelected).If(s =&gt; s.Is(() =&gt; type == &quot;&quot;));         dsl.Self().Core().JQuery.Attributes.AddClass(classSelected).If(s =&gt; s.Is(() =&gt; type == typeOfTodo.ToString()));                                                             })                                .When(JqueryBind.Click)                                .Do()                                .Direct()                                .OnSuccess(dsl =&gt;                                                            {     dsl.WithSelf(r =&gt; r.Closest(HtmlTag.Ul).Find(HtmlTag.A)).Core().JQuery.Attributes.RemoveClass(classSelected);     dsl.Self().Core().JQuery.Attributes.AddClass(classSelected);                                                                                                               })                                 .AsHtmlAttributes(new { href = &quot;#!&quot;.AppendToHashQueryString(new { Type = typeOfTodo }) })                                 .ToLink(typeOfTodo.ToString()); }    &lt;li&gt;  @createLi(GetTodoByClientQuery.TypeOfTodo.All,true)        &lt;\/li&gt;    &lt;li&gt;  @createLi(GetTodoByClientQuery.TypeOfTodo.Active,false)    &lt;\/li&gt;  &lt;li&gt;  @createLi(GetTodoByClientQuery.TypeOfTodo.Completed,false) &lt;\/li&gt; <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 razor view<\/i>  <\/p>\n<h6>\u0427\u0442\u043e \u043a \u0447\u0435\u043c\u0443 ?<\/h6>\n<p>  <\/p>\n<ul>\n<li><b>When(JqueryBind.InitIncoding)<\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435<\/li>\n<li><b>Do <\/b> \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/li>\n<li><b>Direct<\/b> \u2013 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<\/li>\n<li><b>OnSuccess <\/b> \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u043b\u044f Direct \u043d\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 OnBegin \u0438\u043b\u0438 OnSuccess, \u043d\u043e OnError \u0438 OnBreak \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445<\/i><br \/> \n<ul>\n<li><b>var type <\/b>\u2013 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445<\/li>\n<li><b>add class to self if IsFirst is true And type is Empty<\/b> \u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441, \u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0438 \u0432 type \u043f\u0443\u0441\u0442\u043e\u0439<\/li>\n<li><b>add class to self if type is current type<\/b> \u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0435\u0441\u043b\u0438 type \u0440\u0430\u0432\u0435\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0443 typeOfTodo<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>When(JqueryBind.Click)<\/b> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435<\/li>\n<li><b>Do <\/b> \u2014 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f<br \/>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043c\u044b \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u0438\u043b location<\/i>  <\/li>\n<li><b>Direct<\/b> \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<br \/> \n<ul>\n<li><b>remove class <\/b>\u2013 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 selected \u0443 \u0432\u0441\u0435\u0445 A, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c UL<\/li>\n<li><b>add class to self<\/b> \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0441 selected \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443<\/li>\n<\/ul>\n<p>  <\/li>\n<li><b>AsHtmlAttributes <\/b> \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c IML \u043a\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 href<\/li>\n<\/ul>\n<h5>Filter by type todo ( \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 )<\/h5>\n<p>  <\/p>\n<pre><code class=\"cs\">&lt;li&gt;     @Html.Todo().LiHash(setting =&gt;                             {                          setting.IsFirst = true;                          setting.SelectedClass = classSelected;                           setting.Type = GetTodoByClientQuery.TypeOfTodo.All;                             })                     &lt;\/li&gt; <\/code><\/pre>\n<h4>\u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043f\u043b\u044e\u0441\u044b !<\/h4>\n<p>  \u0412 \u0447\u0435\u043c \u0436\u0435 \u043f\u043b\u044e\u0441\u044b IML, \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0435\u0449\u0451 \u0440\u0430\u0437:  <\/p>\n<ul>\n<li> <b>\u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f <\/b>\u2013 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u044e \u043f\u0440\u0438\u0437\u043c\u0443 \u043d\u0430 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u0442\u043e-\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430 ( \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u043e ), \u0434\u0440\u0443\u0433\u0438\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0441\u0443\u0449\u0430 \u043d\u0435 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u0430\u043c, \u043d\u043e IML \u044d\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e C#, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u043b\u0438, \u044f \u0434\u0443\u043c\u0430\u044e \u043f\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0443 \u043e\u0446\u0435\u043d\u044f\u0442 \u044d\u0442\u043e\u0442 \u043f\u043b\u044e\u0441.<\/li>\n<li><b>\u041c\u043e\u0449\u043d\u044b\u0435 extensions<\/b> \u2013 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u0440\u0438\u0432\u0435\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0438\u0445 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043b\u043e\u0432\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0449\u0451 \u043f\u0430\u0440\u0443:<br \/> \n<ul>\n<li><b>Drop down<\/b><br \/> \n<pre><code class=\"cs\">@Html.For(r=&gt;r.HcsId).DropDown(control =&gt;                                 {                  control.Url = Url.Action(&quot;HealthCareSystems&quot;, &quot;Shared&quot;);                  control.OnInit = dsl =&gt; dsl.Self().Core().Rap().DropDown();                  control.Attr(new { @class = &quot;selectInput&quot;, style = &quot;width:375px&quot; });                                 }) <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: OnInit \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 Action, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448 extensions \u0432\u043d\u0435\u0434\u0440\u044f\u044f \u0432 \u043d\u0435\u0433\u043e IML. <br \/>  <\/i><br \/>    <b>Dialog<\/b>  <\/p>\n<pre><code class=\"cs\">@Html.ProjectName().OpenDialog(setting =&gt;                          {                             setting.Url = Url.Dispatcher()                                              .Model&lt;GroupEditProviderOrderCommand&gt;()                                              .AsView(&quot;~\/Views\/ProviderOrder\/Edit.cshtml&quot;);                             setting.Content = &quot;Edit&quot;;                             setting.Options = options =&gt; { options.Title = &quot;Edit Order&quot;; };                          }) <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Action \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 setting.Options \u044d\u0442\u043e Action. <br \/>  \u0421\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e IML \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 html extensions \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<br \/>  <\/i><\/p>\n<\/li>\n<li><b>\u0415\u0449\u0451 \u043c\u043e\u0449\u043d\u0435\u0435 extensions<\/b><br \/> \n<ul>\n<li><b>Grid<\/b> \u2014 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 IML ( \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f )<br \/> \n<pre><code class=\"cs\">@(Html.ProjectName()       .Grid&lt;CTRPrintLogModel&gt;()       .Columns(dsl =&gt;                {           dsl.Template(@&lt;text&gt;                            &lt;span&gt;@item.For(r=&gt;r.Comment)&lt;\/span&gt;                                  &lt;\/text&gt;)                                       .Title(&quot;Comment&quot;);            const string classVerticalTop = &quot;vertical_top&quot;;          dsl.Bound(r =&gt; r.Time).Title(&quot;Time&quot;).HtmlAttributes(new { @class = classVerticalTop });          dsl.Bound(r =&gt; r.Version).Title(&quot;Type&quot;).HtmlAttributes(new { @class = classVerticalTop });                             dsl.Bound(r =&gt; r.PrintDate).Title(&quot;Date&quot;);          dsl.Bound(r =&gt; r.Comment).Raw();                })       .AjaxGet(Url.RootAction(&quot;GetCTRPrintLogModel&quot;, &quot;CTR&quot;))) <\/code><\/pre>\n<p>  <\/li>\n<li> <b>Tabs <\/b><br \/> \n<pre><code class=\"cs\">@(Html.Rap()       .Tabs&lt;Enums.CarePlanTabs&gt;()       .Items(dsl =&gt;              {                          dsl.AddTab(Url.Action(&quot;RedFlags&quot;, &quot;PatientRedFlag&quot;), Enums.CarePlanTabs.RedFlags);                  dsl.AddTab(Url.Action(&quot;Goals&quot;, &quot;IncGoal&quot;), Enums.CarePlanTabs.SelfCareGoals);                  dsl.AddTab(Url.Action(&quot;Index&quot;, &quot;IncAppointment&quot;), Enums.CarePlanTabs.Appointments);                      })) <\/code><\/pre>\n<p>  <i>\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0441 html extensions \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e\u0434 \u043d\u0443\u0436\u0434\u044b \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/i>  <\/li>\n<\/ul>\n<p>  <\/li>\n<li> <b>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 hash<\/b> \u2013 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 IncChangeUrl, \u043d\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c:\n<ul>\n<li><b>Hash.Fetch <\/b>\u2013 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 hash \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b ( sandbox )<\/li>\n<li> <b>Hash.Insert\/Update<\/b> \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 hash \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/li>\n<li> <b>Hash.Manipulate<\/b> \u2013 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u043e\u043d\u043a\u043e ( set\/ remove by key ) \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 hash<\/li>\n<li><b>AjaxHash <\/b> \u2014 \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 Submit, \u043d\u043e \u043d\u0435 \u0434\u043b\u044f form, \u0430 \u0434\u043b\u044f Hash.<\/li>\n<\/ul>\n<p>   <\/li>\n<li><b>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 Insert <\/b>\u2013 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 TODO \u043c\u043d\u0435 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c, \u043d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e<br \/> \n<ul>\n<li><b>Insert Generic<\/b>\u2013 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u044b\u0448\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u201c\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c\u201d, \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0432 Insert \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 For, \u0430 \u0442\u0430\u043a\u0436\u0435 template \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u043e\u0439.\n<pre><code class=\"cs\">Html.When(JqueryBind.InitIncoding)     .Do()     .AjaxGet(Url.Action(&quot;FetchComplex&quot;, &quot;Data&quot;))     .OnSuccess(dsl =&gt;                    {  dsl.WithId(newsDivId).Core().Insert.For&lt;ComplexVm&gt;(r =&gt; r.News).WithTemplateByUrl(urlNewsTmpl).Html();  dsl.WithId(contactDivId).Core().Insert.For&lt;ComplexVm&gt;(r =&gt; r.Contacts).WithTemplateByUrl(urlContactsTmpl).Html();                    })     .AsHtmlAttributes()     .ToDiv() <\/code><\/pre>\n<p>   <\/li>\n<\/ul>\n<p>   <\/li>\n<li><b> \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 validation ( \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u0430\u043a \u043a\u043b\u0438\u0435\u043d\u0442 ) <\/b> \u2014 \u0432 \u043c\u043d\u043e\u0433\u0438\u0445 js framework \u0435\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438, \u043d\u043e IML, \u043a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043b\u044e\u0431\u044b\u0445 validation engine ( FluentValidation, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 MVC) \u0431\u0435\u0437 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.\n<ul>\n<li><b>\u041a\u043e\u0434 command<\/b><br \/> \n<pre><code class=\"cs\">if (device != null)    throw IncWebException.For&lt;AddDeviceCommand&gt;(r =&gt; r.Pin, &quot;Device with same pin is already exist&quot;); <\/code><\/pre>\n<p>  <\/li>\n<li> <b>\u041a\u043e\u0434 view<\/b><br \/> \n<pre><code class=\"cs\">.OnError(dsl =&gt; dsl.Self().Core().Form.Validation.Refresh()) <\/code><\/pre>\n<p>  <\/li>\n<\/ul>\n<p>  <i> \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a OnError \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 action ( submit, ajaxpost or etc )<\/i>  <\/li>\n<li><b>\u041c\u0435\u043d\u044c\u0448\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432<\/b> \u2013 \u0441 \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 js framework \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 js \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e IML \u0438\u043c\u0435\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 ( \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043d\u0435 \u0432 \u0441\u0447\u0435\u0442 ) \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a <\/li>\n<li><b>\u0422\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 template<\/b> \u2013 \u044f \u043e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e <\/li>\n<li><b>\u0417\u0430\u043c\u0435\u043d\u0430 template engine<\/b> \u2014 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043b\u044e\u0431\u043e\u0439, \u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0442\u043e\u0442 \u0436\u0435 <\/li>\n<li><b>\u0413\u043e\u0442\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/b> \u2013 IML \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c Incoding Framework \u0438 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 js framework \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u043d\u0430\u044f ( \u0441\u0435\u0440\u0432\u0435\u0440 \/ \u043a\u043b\u0438\u0435\u043d\u0442 \/ unit testing ) \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0435\u0441\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. <\/li>\n<\/ul>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u041f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 todo \u043d\u0430 IML \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430: \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b \u0432\u0441\u0435 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 ( \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 ) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0447\u0430\u0449\u0435 \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u0431\u044b\u0432\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438\u043b\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<p>  \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b ( \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 ):  <\/p>\n<ul>\n<li><b>Paginated <\/b>\u2013 \u0435\u0441\u043b\u0438 \u0432 \u0431\u0430\u0437\u0435 \u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/li>\n<li><b>Order <\/b>\u2013 \u0442\u0430 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430<\/li>\n<li><b>Where <\/b> \u2014 \u0442\u0430 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430<\/li>\n<\/ul>\n<p>  \u041d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f ( \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043d\u0430\u043b\u043e\u0433\u0430 ) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0435\u0439, \u0443\u0434\u043e\u0431\u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441 ( \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u0435\u0439 ) \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u044f\u0442\u044c IML ))<\/b><\/p>\n<div class=\"spoiler_text\">\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 IML \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:  <\/p>\n<ul>\n<li><b>\u041e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/b><br \/> \n<pre><code class=\"cs\">var val = Selector.Incoding.AjaxGet(url); dsl.WithId(yourId).Core().JQuery.Attributes.Val(val); <\/code><\/pre>\n<p>  <\/li>\n<li> <b>\u041d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 <\/b><br \/> \n<pre><code class=\"cs\">dsl.With(r =&gt; r.Name(s =&gt; s.Last)).Core().Insert.For&lt;ContactVm&gt;(r =&gt; r.Last).Val(); dsl.With(r =&gt; r.Name(s =&gt; s.First)).Core().Insert.For&lt;ContactVm&gt;(r =&gt; r.First).Val();  dsl.With(r =&gt; r.Name(s =&gt; s.City)).Core().Insert.For&lt;ContactVm&gt;(r =&gt; r.City).Val(); <\/code><\/pre>\n<p>  <\/li>\n<\/ul>\n<p>  <\/div>\n<\/div>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u043b\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 IML ( \u0438 Incoding Framework ), \u043d\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u0438 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0442\u0435 \u043a\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043d\u0430\u0448 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0439\u0442\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432 \u0441\u0435\u0442\u0438. \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e IML \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435 \u0445\u0443\u0436\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 js framework \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0437\u043e\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 autocomplete, Tree View, grid \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>  P.S. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0434 \u043a\u0440\u0438\u0442\u0438\u043a\u0438 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c )))<\/li>\n<\/ul>\n<p><\/i>    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/214963\/\"> http:\/\/habrahabr.ru\/post\/214963\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/27d\/210\/ba8\/27d210ba8f21f85641c982fd89c4722a.jpg\" alt=\"image\"\/><br \/>  <b>disclaimer<\/b>: \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u0443 ( \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0443\u0448\u0438\u043b\u0430\u0441\u044c \u043d\u0430 <a href=\"http:\/\/habrahabr.ru\/post\/214293\/\">\u0445\u0430\u0431\u0440\u0435 <\/a>), \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b IML \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f <a href=\"http:\/\/todomvc.com\/\">ToDo MVC<\/a>.<\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0443\u043c\u0430\u043a\u043e\u0432<\/h4>\n<p>  \u041a\u0440\u0438\u0442\u0438\u043a\u0430 \u2013 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u044f\u0433\u043a\u043e\u0435 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043a \u043c\u043e\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0438\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 ( \u043d\u0430 \u0444\u043e\u0442\u043e \u0442\u043e\u043f \u0431\u0440\u0435\u0434\u043e\u0432\u044b\u0445 ), \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435:  <\/p>\n<ul>\n<li><b>\u041a\u043e\u0434 \u043d\u0430 AngularJs \u043d\u0435 \u0444\u043e\u043d\u0442\u0430\u043d<\/b> \u2014 \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c, \u0445\u043e\u0442\u044f \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430<\/li>\n<li><b>\u0421\u043b\u0430\u0431\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/b> \u2013 \u0443\u043f\u043e\u0440 \u0431\u044b\u043b \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u043d\u0435 \u043d\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0443\u0441\u044c \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b ( \u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u043d\u0430 open source, \u043d\u043e \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u0435\u0437 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f )<\/li>\n<li><b>\u041d\u0435 \u0437\u043d\u0430\u0435\u0448\u044c AngularJs ?<\/b> \u2013 \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0435\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 AngularJs<\/li>\n<li><b>\u0422\u043e\u043f\u0438\u043a JS<\/b> \u2013 \u044d\u0442\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f asp.net mvc, \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 TextBoxFor \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. <\/li>\n<\/ul>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 ToDo ?<\/h4>\n<p>  \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201cTodo MVC\u201d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 IML \u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0412\u043e \u043f\u0435\u0440\u0432\u044b\u0445 <a href=\"http:\/\/todo.incframework.com\">demo<\/a> \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u0435 \u043e\u0442 \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f js framework, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435 local storage, \u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/github.com\/IncodingSoftware\/inc-todo\">\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u0432 \u043f\u043e\u0441\u0442\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0441\u0442\u0440\u043e\u0438\u043b \u0432\u0441\u044e \u043b\u043e\u0433\u0438\u043a\u0443 ( \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u043f\u043e\u0434\u0432\u0430\u043b\u0430, \u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442.\u0434. ) \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0445\u043e\u0442\u044f \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u043f\u0440\u043e\u0449\u0435 ( \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e ) \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u201c\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u201d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044f IML \u043a\u043e\u0434, \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a \u0441\u0435\u0431\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c.<\/p>\n<h4>Code review<\/h4>\n<p>  \u0421\u0442\u0438\u043b\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c (\u0438\u043d\u0430\u0447\u0435 \u043e\u0431\u044a\u0435\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043c ), \u0430 \u043e\u0431\u0437\u043e\u0440 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f todo. \u042f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432\u044b\u0448\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 IML \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043d\u043e \u0432 \u0446\u0435\u043b\u044f\u0445 \u0443\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-214963","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/214963","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=214963"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/214963\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=214963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=214963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=214963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}