IML TODO

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

рдХрдл рдорд┐рд▓рд╛


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


рдЯреВрдбреЛ рдХреНрдпреЛрдВ?


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

рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛


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


рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ


рдХреЛрдб рдХреЛ 3 рд╡реНрдпреВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЫрд╡рд┐

рд╕реВрдЪрдХрд╛рдВрдХ (рддреАрди рддрддреНрд╡реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░)

TODO рдлреЙрд░реНрдо рдЬреЛрдбрд╝реЗрдВ

@using (Html.When(JqueryBind.Submit) .DoWithPreventDefault() .Submit(options => { options.Url = Url.Dispatcher() .Push(new AddTodoCommand { ClientId = Selector.Incoding.Cookie(CookieManager.ClientId) }); }) .OnSuccess(dsl => { dsl.WithId(containerId).Core().Trigger.Incoding(); dsl.Self().Core().Form.Reset(); }) .AsHtmlAttributes() .ToBeginTag(Html, HtmlTag.Form)) { @Html.TextBoxFor(r => r.Title, new { placeholder = "What needs to be done?", autofocus = "" }) } 

рдзреНрдпрд╛рди рджреЗрдВ: рдореИрдВ рддреБрд░рдВрдд "рд╣рд╛рдВ, рдпрд╣ рдЧрдВрднреАрд░ рдирд╣реАрдВ рд╣реИ, рдХреА рд╢реИрд▓реА рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рд╣реИ, рдЖрдкрдХреЛ рд╣рд░ рдЬрдЧрд╣ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ рдХрд┐ рд▓реЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ !!!" - рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ C # рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЪреЗрд╣рд░реЗ рдореЗрдВ рдПрдХ рддрд░реНрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк IML рдирд┐рд░реНрдорд╛рдг рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ, C # рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ ( рдЧрд┐рдмреНрдм рдкрд░ рдкреБрдирд░реНрдЦрд░реАрдж рдХреЛрдб рдХреЗ рд╕рд╛рде рднреА)
рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?


TODO рдЬреЛрдбрд╝реЗрдВ рдлрд╝реЙрд░реНрдо (рд╡реИрдХрд▓реНрдкрд┐рдХ)

 @using (Html.Todo().BeginForm(setting => { setting.TargetId = containerId; setting.Routes = new { ClientId = Selector.Incoding.Cookie(CookieManager.ClientId) }; })) { @Html.TextBoxFor(r => r.Title, new { placeholder = "What needs to be done?", autofocus = "" }) } 

рдиреЛрдЯ: рдХрдо рдХреЛрдб рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЕрдм рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ (рд╕рдмрдорд┐рдЯ рдХреЗ рдмрд╛рдж рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди, рдЖрджрд┐) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣реБрдб рдХреЗ рдиреАрдЪреЗ
 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 => { options.Url = url.Dispatcher() .Push(setting.Routes); }) .OnSuccess(dsl => { dsl.WithId(setting.TargetId).Core().Trigger.Incoding(); dsl.Self().Core().Form.Reset(); }) .AsHtmlAttributes() .ToBeginTag(this.helper, HtmlTag.Form); } 

рдзреНрдпрд╛рди рджреЗрдВ: рдХреЛрдб рдЕрдзрд┐рдХрд╛рдВрд╢ asp.net mvc рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ "рд╕рд╛рдорд╛рдиреНрдп" рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рдЕрдирд╛рдо рд╡рд┐рдзрд┐ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд░реНрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред


рдкрд╛рддреНрд░

 @(Html.When(JqueryBind.InitIncoding | JqueryBind.IncChangeUrl) .Do() .AjaxGet(Url.Dispatcher() .Query(new { ClientId = Selector.Incoding.Cookie(CookieManager.ClientId), Type = Selector.Incoding.HashQueryString(r => r.Type) }) .AsJson()) .OnSuccess(dsl => { string urlTmpl = Url.Dispatcher() .Model(new GetTodoByClientQuery.Tmpl { FooterId = footerId }) .AsView("~/Views/Home/Todo_List_Tmpl.cshtml"); dsl.Self().Core().Insert.WithTemplateByUrl(urlTmpl).Html(); dsl.WithId(footerId).Core().Trigger.Incoding(); }) .AsHtmlAttributes(new { id = containerId }) .ToDiv()) 

рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?


рдХрдВрдЯреЗрдирд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛)

 @Html.Todo().Container(setting => { setting.Id = containerId; setting.Url = Url.Dispatcher() .Query(new { ClientId = Selector.Incoding.Cookie(CookieManager.ClientId), Type = Selector.Incoding.HashQueryString(r => r.Type) }) .AsJson(); setting.Tmpl = Url.Dispatcher() .Model(new GetTodoByClientQuery.Tmpl { FooterId = footerId }) .AsView("~/Views/Home/Todo_List_Tmpl.cshtml"); setting.DependencyId = footerId; }) 

рдзреНрдпрд╛рди рджреЗрдВ: рдпрджрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмреНрд▓реЙрдХ ui рдпрд╛ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рддреЛ рдЕрдм рдпрд╣ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╣реБрдб рдХреЗ рдиреАрдЪреЗ
 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 => { dsl.Self().Core().Insert.WithTemplateByUrl(setting.Tmpl).Html(); dsl.WithId(setting.DependencyId).Core().Trigger.Incoding(); }) .AsHtmlAttributes(new { id = setting.Id }) .ToDiv(); } 


рдлрд╝реБрдЯрдмрд╛рд▓

 @(Html.When(JqueryBind.None) .Do() .Direct(new FooterVm { AllCount = Selector.Jquery.Class("toggle").Length(), IsCompleted = Selector.Jquery.Class("toggle").Is(JqueryExpression.Checked), CompletedCount = Selector.Jquery.Class("toggle") .Expression(JqueryExpression.Checked) .Length(), })) .OnSuccess(dsl => { string urlTmpl = Url.Dispatcher() .Model(new TodoFooterTmplVm { ContainerId = containerId }) .AsView("~/Views/Home/Todo_Footer_Tmpl.cshtml"); dsl.Self().Core().Insert.Prepare().WithTemplateByUrl(urlTmpl).Html(); }) .AsHtmlAttributes(new { id = footerId }) .ToDiv()) 



рдЯреЛрдбреЛ рд╕реВрдЪреА tmpl

рдПрдХ рдЯреВрдбреВ рд╕реВрдЪреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ
 @using (var template = Html.Incoding().Template()) { <ul> @using (var each = template.ForEach()) { @using (each.Is(r => r.Active)) { @createCheckBox(true) } @using (each.Not(r => r.Active)) { @createCheckBox(false) } <li class="@each.IsInline(r=>r.Active,"completed")"> <label>@each.For(r=>r.Title)</label> </li> </ul> } 

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

рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?



рдЕрдиреНрдп рдЖрдЗрдЯрдо


рдмрдЯрди рдбреЗрд▓

 @(Html.When(JqueryBind.Click) .Do() .AjaxPost(Url.Dispatcher().Push(new DeleteEntityByIdCommand { Id = each.For(r => r.Id), AssemblyQualifiedName = typeof(Todo).AssemblyQualifiedName })) .OnBegin(r => { r.WithSelf(s => s.Closest(HtmlTag.Li)).Core().JQuery.Manipulation.Remove(); r.WithId(Model.FooterId).Core().Trigger.Incoding(); r.WithId(toggleAllId).Core().Trigger.None(); }) .AsHtmlAttributes(new { @class = "destroy" }) .ToButton("")) 

рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?



рдмрдЯрди рдбреЗрд▓ (рд╡реИрдХрд▓реНрдкрд┐рдХ)

 @Html.Todo().Verb(setting => { setting.Url = Url.Dispatcher().Push(new DeleteEntityByIdCommand { Id = each.For(r => r.Id), AssemblyQualifiedName = typeof(Todo).AssemblyQualifiedName }); setting.OnBegin = dsl => { dsl.WithSelf(s => 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 = "destroy" }; }) 

рдиреЛрдЯ: OnBegin рдПрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ IML рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред (рдФрд░ рднреА рдЙрджрд╛рд╣рд░рдг рд╣реЛрдВрдЧреЗ)

рд╣реБрдб рдХреЗ рдиреАрдЪреЗ
 public class VerbSetting { public string Url { get; set; } public Action<IIncodingMetaLanguageCallbackBodyDsl> OnBegin { get; set; } public Action<IIncodingMetaLanguageCallbackBodyDsl> OnSuccess { get; set; } public object Attr { get; set; } public string Content { get; set; } } public MvcHtmlString Verb(Action<VerbSetting> configure) { var setting = new VerbSetting(); configure(setting); return this.helper.When(JqueryBind.Click) .Do() .AjaxPost(setting.Url) .OnBegin(dsl => { if (setting.OnBegin != null) setting.OnBegin(dsl); }) .OnSuccess(dsl => { if (setting.OnSuccess != null) setting.OnSuccess(dsl); }) .AsHtmlAttributes(setting.Attr) .ToButton(setting.Content); } 

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


рдЪреЗрдХрдмреЙрдХреНрд╕ рдкреВрд░рд╛ рд╣реБрдЖ

 var createCheckBox = isValue => Html.When(JqueryBind.Change) .Do() .AjaxPost(Url.Dispatcher().Push(new ToggleTodoCommand { Id = each.For(r => r.Id) })) .OnBegin(dsl => { dsl.WithSelf(r => r.Closest(HtmlTag.Li)) .Behaviors(inDsl => { inDsl.Core().JQuery.Attributes.RemoveClass("completed"); inDsl.Core().JQuery.Attributes.AddClass("completed") .If(builder => builder.Is(() => Selector.Jquery.Self())); }); dsl.WithId(Model.FooterId).Core().Trigger.Incoding(); dsl.WithId(toggleAllId).Core().Trigger.None(); }) .AsHtmlAttributes(new {@class="toggle" }) .ToCheckBox(isValue); 

рдиреЛрдЯ: рд░реЗрдЬрд░ рдкреЗрдЬ рдХреЗ рднреАрддрд░, рдЖрдк рдЕрдирд╛рдо C # рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд░реЗрдЬрд╝рд░ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?



рдЯрд╛рдЗрдкреЛ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ

 @{ const string classSelected = "selected"; var createLi = (typeOfTodo,isFirst) => Html.When(JqueryBind.InitIncoding) .Do() .Direct() .OnSuccess(dsl => { var type = Selector.Incoding.HashQueryString(r => r.Type); if (isFirst) dsl.Self().Core().JQuery.Attributes.AddClass(classSelected).If(s => s.Is(() => type == "")); dsl.Self().Core().JQuery.Attributes.AddClass(classSelected).If(s => s.Is(() => type == typeOfTodo.ToString())); }) .When(JqueryBind.Click) .Do() .Direct() .OnSuccess(dsl => { dsl.WithSelf(r => r.Closest(HtmlTag.Ul).Find(HtmlTag.A)).Core().JQuery.Attributes.RemoveClass(classSelected); dsl.Self().Core().JQuery.Attributes.AddClass(classSelected); }) .AsHtmlAttributes(new { href = "#!".AppendToHashQueryString(new { Type = typeOfTodo }) }) .ToLink(typeOfTodo.ToString()); } <li> @createLi(GetTodoByClientQuery.TypeOfTodo.All,true) </li> <li> @createLi(GetTodoByClientQuery.TypeOfTodo.Active,false) </li> <li> @createLi(GetTodoByClientQuery.TypeOfTodo.Completed,false) </li> 

рдиреЛрдЯ: рд░реЗрдЬрд░ рджреГрд╢реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг
рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?



рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐)

 <li> @Html.Todo().LiHash(setting => { setting.IsFirst = true; setting.SelectedClass = classSelected; setting.Type = GetTodoByClientQuery.TypeOfTodo.All; }) </li> 


рдмрд┐рдирд╛ рд╢рд░реНрдд рд▓рд╛рдн!


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

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


All Articles