AngularJS рдмрдирд╛рдо IML

рдЫрд╡рд┐

рдбрд┐рд╕реНрдХреНрд▓реЗрдорд░ : рддреБрд▓рдирд╛ рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ "рд╣реЛрд▓рд┐рд╡рд░" рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЯреВрд▓ рджреВрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреЛрдгреАрдпрдЬ рдХреА рд╕рднреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 10 рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ 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")) 


рдмреЗрд╣рддрд░:



рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ

рд╕рд░реНрд╡рд░ рдХреЛрдб

 public ActionResult Get(GetProductByCodeQuery query) { List vms = dispatcher.Query(query); return IncJson(vms); // for AngularJs need use Json with AllowGet } 

рдиреЛрдЯ: рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ 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 рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрдВрдХреЛрдбрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
 Url.Dispatcher().Query(new GetProductQuery() {Code = Html.Selector().Name(r=>r.Code)}).AsJson() 


рдбреЗрдЯрд╛ рдкреБрд╢ рдХрд░реЗрдВ

рд╕рд░реНрд╡рд░ рдХреЛрдб

 public ActionResult Add(AddCommand input) { dispatcher.Push(input); return IncJson(); // for AngularJS need use Json() } 

рдиреЛрдЯ: рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ 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"> } 

рдмреЗрд╣рддрд░:


рдЦрд╛рдХрд╛


рд╕рд░реНрд╡рд░ рдХреЛрдб

 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); // for angular need use Json with AllowGet } 

рдиреЛрдЯ: рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ 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 рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ mvc рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рддрд░рдл рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд░реНрдерди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ asp.net mvc рдореЗрдВ mvc рдХрд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЙрдкрдпреБрдХреНрдд рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles