рдбрд┐рд╕реНрдХреНрд▓реЗрдорд░ : рддреБрд▓рдирд╛ рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ "рд╣реЛрд▓рд┐рд╡рд░" рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЯреВрд▓ рджреВрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреЛрдгреАрдпрдЬ рдХреА рд╕рднреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 10 рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ IML рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВред
рд╣рдо рдХреНрдпрд╛ рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗ?
- рдирд┐рдпрдВрддреНрд░рдХ
- рд╡рд┐рд░рд╛рд╕рдд
рдиреЛрдЯ: IML рдореЗрдВ рдирд╣реАрдВ
- рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ
- рдбреЗрдЯрд╛ рдкреБрд╢ рдХрд░реЗрдВ
- рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░реЗрдВ
- рдЦрд╛рдХрд╛
- рд╡рд╛рджреЗ
рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рдЖрдИрдПрдордПрд▓ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛ, рдФрд░ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рд╕реНрдорд╛рд░реНрдЯ рдкрд╕рдВрдж рдХреА рдорджрдж рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЪреБрдирд╛ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ asp.net mvc рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдореБрдЭреЗ рдЪрд░, рд╕реНрдерд┐рд░рд╛рдВрдХ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕рдорд░реНрдерди рдореЗрдВ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред
рдиреЛрдЯ: рдЗрд╕рдХреЗ рдмрд╛рдж рдЕрдХреНрд╕рд░ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡рд┐рдХрд╛рд╕ asp.net mvc рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╣реЛрддрд╛ рд╣реИрд╣рдо рдХреИрд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗ?
рддрдХрдиреАрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдореИрдВ AngularJS (View and Js) рдФрд░ IML (рдХреЗрд╡рд▓ рджреЗрдЦреЗрдВ) рд╡рд┐рдХрд▓реНрдк рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЖрдЧреЗ рдореИрдВ рддрд░реНрдХ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ IML рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ IML рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХреЛ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рдирд┐рдпрдВрддреНрд░рдХ
рдХреЛрдгреАрдп рдЬреЗрдПрд╕ рджреГрд╢реНрдп
<div ng-controller="angularController"> <button ng-click="sayHello()">Say</button> </div>
рдХреЛрдгреАрдп js
app.controller('angualrController', function ($scope) { $scope.sayHello = function(){ alert('Hello') } });
IML
@(Html.When(JqueryBind.Click) .Do() .Direct() .OnSuccess(dsl => dsl.Utilities.Window.Alert("Hello")) .AsHtmlAttributes() .ToButton("Say"))
рдмреЗрд╣рддрд░:
- рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдорд╛рд░реНрдХрдЕрдк рдПрдХ рд╕рд╛рде
рдиреЛрдЯ: рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреНрд╖рдг рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрд░реНрдХ рдкреГрд╖реНрда рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди asp.net mvc рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╕реА # рдХреЛрдб рдЗрди рд╡реНрдпреВ (cshtml) рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬреЛ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддрд┐ рд╕рд╛рд░ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд░реНрдХ рд╡рд┐рдХрд╛рд╕ рдореЙрдбрд▓ рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИред
- Initilesence рд╕рд╣рд╛рдпрддрд╛
рдиреЛрдЯ: AngularJs рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдПрдХ html рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдпрд╛ рдСрдЯреЛ-рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ IML рдПрдХ C # рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
- рдШрдЯрдирд╛рдПрдБ рдЭрдВрдбреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ: рдЬрдм рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдШрдЯрдирд╛ (JqueryBind.Click | JqueryBind.ocus) рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рдореВрд╣ рдмрдирд╛рдирд╛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
- рдШрдЯрдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рдмрдВрдзрди (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реЛрдХреЗрдВ, рдкреНрд░рдЪрд╛рд░ рдмрдВрдж рдХрд░реЗрдВ)
рдиреЛрдЯ: AngularJS рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди IML рдореЗрдВ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ
рд╕рд░реНрд╡рд░ рдХреЛрдб
public ActionResult Get(GetProductByCodeQuery query) { List vms = dispatcher.Query(query); return IncJson(vms);
рдиреЛрдЯ: рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ AngularJS рдФрд░ IML рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдХреЛрдгреАрдп html
<div ng-conroller="productController"> @Html.TextBoxFor(r => r.Code) <label>{{model.Name}}</label> <button>Get name</button> </div>
рдХреЛрдгреАрдп js
kitchen.controller('productController', function ($scope, $http) { $scope.get = function(){ $http.get({ url:'product/get', params:{Code:$('[Name="Code"]').val()} }) .success(function(data) { $scope.Name = data.Name }); } });
IML
@{ var labelId = Guid.NewGuid().ToString(); } @Html.TextBoxFor(r=>r.Code) @(Html.When(JqueryBind.Click) .Do() .AjaxGet(Url.Action("Product","Get",new { Code = Html.Selector().Name(r=>r.Code) }) .OnSuccess(dsl => dsl.WithId(labelId).Core().Insert.For(r=>r.Name).Text()) .AsHtmlAttributes() .ToButton("Get name"))
рдзреНрдпрд╛рди рджреЗрдВ: рдЬрдм рдПрдХ url рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рди рдХреЗрд╡рд▓ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдирд╛рдо рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ Url.Action ("рдЙрддреНрдкрд╛рдж", "рдЧреЗрдЯ", рдирдпрд╛ GetProductQuery) () {рдХреЛрдб = Html.Selector () рдХрд╛ рдирд╛рдо рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (r => r.Code)})рдмреЗрд╣рддрд░:
- рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ
- Url - AngularJs рдореЗрдВ рдкрддрд╛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЦрд╛рддреЗ рдореЗрдВ рд░реВрдЯ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рд╕реЗ рдПрдХреНрд╢рди (рдирд╛рдо рдмрджрд▓рдиреЗ) рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ: рдЪреВрдВрдХрд┐ AngularJs рдореИрдиреБрдЕрд▓ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ js рдХреЛрдб рдХреЗ рднреАрддрд░ рд╕рд░реНрд╡рд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
- рдкреНрд░рд╢реНрди - AngularJs рд╕рд░реНрд╡рд░ рдореЙрдбрд▓ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рдореЙрдбрд▓ рдЖрд░реЗрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ Url рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд╛рдо рдмрджрд▓рдиреЗ рдФрд░ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ
рдзреНрдпрд╛рди рджреЗрдВ: IML рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдирд╛рдо рдпрд╛ рдХреЛрдб рдлрд╝реАрд▓реНрдб рдХреЛ GetProductQuery рдХрд╛ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди AngularJ рдХреЗ рд▓рд┐рдП {{model.Name}} рдФрд░ $ ([рдирд╛рдо = "рдХреЛрдб"] рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред ) рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред
- рдЪрдпрдирдХрд░реНрддрд╛ - IML рдХреЗ рднреАрддрд░ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдбреЛрдо (рд╣реИрд╢, рдХреБрдХреАрдЬ, рдЬреЗрдПрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдЖрджрд┐) рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- MVD
рдпрджрд┐ рдЖрдк рдПрдорд╡реАрдбреА рдХреЛ url рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрдВрдХреЛрдбрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
Url.Dispatcher().Query(new GetProductQuery() {Code = Html.Selector().Name(r=>r.Code)}).AsJson()
рдбреЗрдЯрд╛ рдкреБрд╢ рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░ рдХреЛрдб
public ActionResult Add(AddCommand input) { dispatcher.Push(input); return IncJson();
рдиреЛрдЯ: рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ AngularJS рдФрд░ IML рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдХреЛрдгреАрдп рджреГрд╢реНрдп
<div ng-controller="productController"> @Html.TextBoxFor(r => r.Name) @Html.CheckboxFor(r => r.IsGood) <button ng-click="add"> Add </button> </div>
рдХреЛрдгреАрдп js
kitchen.controller('productController', function ($scope, $http) { $scope.add = function(){ $http({ url: 'product/Add', method: "POST", data: { Name : $('[name="Name"]').val(), IsGood : $('name="IsGood"]').is(':checked') } }) .success(function(data) { alert('success') }); });
IML
@Html.TextBoxFor(r=>r.Name) @Html.CheckboxFor(r=>r.IsGood) @(Html.When(JqueryBind.Click) .Do() .AjaxPost(Url.Action("Product","Add",new { Name = Html.Selector().Name(r=>r.Name), IsGood = Html.Selector().Name(r=>r.IsGood) })) .OnSuccess(dsl => dsl.Utilities.Window.Alert("Success")) .AsHtmlAttributes() .ToButton("Add"))
рдмреЗрд╣рддрд░:
рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░реЗрдВ
рдХреЛрдгреАрдп рджреГрд╢реНрдп
<div ng-controller="productController"> <form name="AddForm"> @Html.TextBoxFor(r => r.Name) @Html.CheckboxFor(r => r.IsGood) <input type="submit" value="save" ng-submit="submit" /> </form> </div>
рдХреЛрдгреАрдп js
controller('productController', function ($scope, $http) { $scope.submit = function(){ $http({ url: 'product/Add', method: "POST", data: angular.toJson($scope.addForm) }).success(function(data) { alert('success') }); });
IML
@using(Html.When(JqueryBind.Submit) .DoWithPreventDefault() .Submit() .OnSuccess(dsl => dsl.Utilities.Window.Alert("Success")) .AsHtmlAttributes() .ToBeginForm(Url.Action("Product","Add"))) { @Html.TextBoxFor(r=>r.Name) @Html.CheckboxFor(r=>r.IsGood) <input type="submit" value="add"> }
рдмреЗрд╣рддрд░:
- рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рдирд╛
рдиреЛрдЯ: рдХреЛрдгреАрдпрдЬреЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕рдореЗрдВ Url, рдкреНрд░рдХрд╛рд░, рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдЦрд╛рдХрд╛
рд╕рд░реНрд╡рд░ рдХреЛрдб
public ActionResult Fetch() { var vms = new List() { new PersonVm(){ Last= "Vasy", First = "Smith", Middle = "Junior"}, new PersonVm(){ Last= "Vlad", First = "Smith", Middle = "Mr"}, }; return IncJson(vms);
рдиреЛрдЯ: рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ AngularJS рдФрд░ IML рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдХреЛрдгреАрдп рдЯреЗрдореНрдкрд▓реЗрдЯ
<script id="person.html" type="text/ng-template"> {{person.last}}, {{person.first}} {{person.middle}} </script>
рдХреЛрдгреАрдп рджреГрд╢реНрдп
<div ng-controller="productAddForm"> <div ng-repear="person in persons" ng-template="person.html"> </div> </div>
рдХреЛрдгреАрдп js
app.controller('personController', function ($scope,$http) { $scope.refresh= function(){ $http.get('person/fetch', function(data){ $scope.Persons= data }); } });
IML рдЯреЗрдореНрдкреНрд▓реЗрдЯ
@{ var tmplId = Guid.NewGuid().ToString(); using (var template = Html.Incoding().Template(tmplId)) { using (var each = template.ForEach()) { @each.For(r=>r.First),@each.For(r=>r.Middle),@each.For(r=>r.Last) } } }
IML рджреЗрдЦреЗрдВ
@(Html.When(JqueryBind.InitIncoding) .Do() .AjaxGet(Url.Action("Personal","Fetch")) .OnSuccess(dsl => dsl.Self().Core().Insert.WithTemplate(tmplId.ToId()).Html()) .AsHtmlAttributes() .ToDiv())
рдмреЗрд╣рддрд░:
- рдлрд┐рд░ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдирд╛
рдиреЛрдЯ: рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдХреЛрдбрд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдзрд┐рдХ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдЧреЗ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИ
- рдПрдХ рдпрд╛ рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ
- рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
- рдЪрдпрдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдЯреЗрдореНрдкреНрд▓реЗрдЯ, рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ (рдЕрдЬрд╛рдХреНрд╕, рдХреБрдХреАрдЬрд╝ рдФрд░ рдЖрджрд┐)
- рдХреИрд╢
AngularJs рдХреЗ рдкрд╛рд╕ Cache рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░реЛрдВ рдХреЗ рд╕рд╛рде
рдЖрдо рдлрд╛рдпрджреЗ рдХреНрдпрд╛ рд╣реИрдВ:
- рд╣рд╛рдВ, рд╣рд╛рдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдпрд╣ рдЯрдВрдХрдг рд╣реИ - рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реА # рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЯреЗрдореНрдкрд▓реЗрдЯ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдЕрдиреНрдп)
- рдмреИрдХрдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯреЗрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ - рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЬреЛ C # рдЬрд╛рдирддрд╛ рд╣реИ рд╡рд╣ рдЖрд╕рд╛рдиреА рд╕реЗ IML рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЕрдкрдиреА рдХрдорд╛рдВрдб рдФрд░ рдХреНрд╡реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ : AngularJs рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ mvc рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рддрд░рдл рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ asp.net mvc рдореЗрдВ mvc рдХрд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЙрдкрдпреБрдХреНрдд рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред