Download presentation
Presentation is loading. Please wait.
Published byLionel Lester Modified over 9 years ago
1
AJAX in ASP.NET MVC AJAX, Partial Page Rendering, jQuery AJAX, MVC AJAX Helpers SoftUni Team Technical Trainers Software University http://softuni.bg
2
2 1.What is AJAX? Raw AJAX vs. AJAX using a JS Library Partial Page Rendering vs. JSON Service 2.AJAX with Unobtrusive JavaScript 3.AJAX MVC Helpers ActionLink and BeginForm Partial Views and AJAX 4.JSON, AJAX and ASP.NET MVC Table of Contents
3
What is AJAX? Asynchronous JavaScript and XML
4
4 AJAX is acronym of Asynchronous JavaScript and XML AJAX == technique for asynchronously loading (in the background) of dynamic Web content and data from the Web server into a HTML page Allows dynamically changing the DOM (client-side) in Web applications Two styles of AJAX Partial page rendering Load an HTML fragment and display it in a JSON service with client-side rendering Loading a JSON object and render it at the client-side with JS / jQuery AJAX
5
5 AJAX advantages Asynchronous calls data is loaded after the page is shown Minimal data transfer less traffic, fast update Responsiveness better user experience AJAX disadvantages Requires more development efforts The browser [Back] and [Refresh] buttons don't work Might cause SEO problems: search engine bots may skip the AJAX AJAX: Pros and Cons
6
6 Browsers support XMLHttpRequest object Exposes a JavaScript API to send raw AJAX requests Send HTTP / HTTPS requests directly to the Web server GET / POST / PUT / DELETE / other AJAX response might be JSON, XML, HTML, as plain text, etc. Same-origin policy https://en.wikipedia.org/wiki/Same-origin_policy https://en.wikipedia.org/wiki/Same-origin_policy AJAX requests can only access the same server that served the original Web page executing the AJAX call The XMLHttpRequest Object
7
7 function updateServerTimeAjax() { var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest(); xhr.open("GET", "/Home/ServerTime", true); xhr.open("GET", "/Home/ServerTime", true); xhr.onreadystatechange = function() { xhr.onreadystatechange = function() { var timeDiv = document.getElementById("timeDisplay"); var timeDiv = document.getElementById("timeDisplay"); timeDiv.innerHTML = ''; timeDiv.innerHTML = ''; if (xhr.readyState == 4 && xhr.status == 200) { if (xhr.readyState == 4 && xhr.status == 200) { timeDiv.innerHTML = xhr.responseText; timeDiv.innerHTML = xhr.responseText; } } xhr.send(); xhr.send();} Raw AJAX – Example The request is finished and the response is ready HTTP status code is "200 OK"
8
8 AJAX with jQuery – Example jQuery dramatically simplifies working with AJAX: Get Server Time Get Server Time <script> function updateServerTimeAjax () { function updateServerTimeAjax () { $("#timeDisplay").load("/Home/ServerTime"); $("#timeDisplay").load("/Home/ServerTime"); }</script>
9
AJAX with Unobtrusive JavaScript
10
Unobtrusive JavaScript == no script is injected into page Only data-attributes to configure the AJAX call settings Requires Microsoft.jQuery.Unobtrusive.Ajax NuGet package jquery.unobtrusive-ajax.js (AJAX helpers) AJAX with Unobtrusive JavaScript & jQuery <a data-ajax="true" href="/Home/ServerTime" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#timeDisplay"> data-ajax-update="#timeDisplay"> Load Server Time Load Server Time</a> 10
11
AJAX Helpers in ASP.NET MVC @Ajax.ActionLink and @Ajax.BeginForm
12
12 AJAX helpers add AJAX functionality to ASP.NET MVC Two core features of AJAX helpers: Invoke an action method asynchronously using AJAX Use the Ajax.ActionLink() helper Submit an entire form using AJAX Use the Ajax.BeginForm() helper AJAX helpers use AjaxOptions object with configurations AJAX Helpers in ASP.NET MVC
13
13 Url – URL to send request HttpMethod – request method (GET / POST / PUT / DELETE / …) InsertionMode – how to handle the received data InsertAfter, InsertBefore or Replace UpdateTargetId – HTML element to be changed LoadingElementId – show / hide "Loading…" when loading Events (JavaScript functions) OnSuccess, OnFailure, OnBegin, OnComplete AjaxOptions Object
14
14 Defines an action link ( ) for loading data with AJAX Ajax.ActionLink Helper – Example @Ajax.ActionLink("Load Server Time", "ServerTime", null, new AjaxOptions { new AjaxOptions { HttpMethod = "GET", HttpMethod = "GET", UpdateTargetId = "timeDisplay", UpdateTargetId = "timeDisplay", LoadingElementId = "timeDisplayLoading", LoadingElementId = "timeDisplayLoading", InsertionMode = InsertionMode.Replace, InsertionMode = InsertionMode.Replace, OnBegin = "OnAjaxRequestBegin", OnBegin = "OnAjaxRequestBegin", OnFailure = "OnAjaxRequestFailure", OnFailure = "OnAjaxRequestFailure", OnSuccess = "OnAjaxRequestSuccess", OnSuccess = "OnAjaxRequestSuccess", OnComplete = "OnAjaxRequestComplete", OnComplete = "OnAjaxRequestComplete", }, new { @class = "btn btn-primary" }) action controller
15
15 A form that submits AJAX request and renders a partial view Ajax.BeginForm Helper – Example @using (Ajax.BeginForm("Search", new AjaxOptions { new AjaxOptions { UpdateTargetId = "results", UpdateTargetId = "results", InsertionMode = InsertionMode.Replace InsertionMode = InsertionMode.Replace })) })){ } @Html.Partial("_BookResult", Model) @Html.Partial("_BookResult", Model)
16
16 Return a PartialView to the helpers (view without the layout) Ajax.BeginForm Helper – Example (2) public ActionResult Search(string query) { var result = BooksData var result = BooksData.GetAll().GetAll().AsQueryable().AsQueryable().Where(book => book.Title.Contains(query)).Where(book => book.Title.Contains(query)).Select(BookViewModel.FromBook).Select(BookViewModel.FromBook).ToList();.ToList(); return this.PartialView("_BookResult", result); return this.PartialView("_BookResult", result);}
17
JSON Services in ASP.NET MVC
18
18 MVC Ajax Helpers cover simple AJAX scenarios Replacing HTML content Partial page rendering Other scenarios require some JavaScript Auto-complete textboxes Client-side validation Invoking JSON services and render content at the client-side Animations JSON Services in ASP.NET MVC
19
19 Return JsonResult in the action Use jQuery.getJSON(…) MVC, JSON Results and JavaScript Rendering public JsonResult AllBooks() { var books = BooksData.GetAll(); var books = BooksData.GetAll(); return this.Json(books, JsonRequestBehavior.AllowGet); return this.Json(books, JsonRequestBehavior.AllowGet);} jQuery.getJSON("AllBooks", null, function(data) { jQuery(data).each(function (index, element) { jQuery(data).each(function (index, element) { var newBookElement = $(" +element.Title+" "); var newBookElement = $(" +element.Title+" "); $("#books").append(newBookElement); $("#books").append(newBookElement); }); });});
20
20 AJAX is powerful technique in Web development Load data asynchronously Without refreshing the entire Web page AJAX Helpers in ASP.NET MVC simplify AJAX calls Controllers return partial views, displayed on the Web page Use ActionLink and BeginForm for simple AJAX calls Still we can implement JSON service with client-side rendering Typically use jQuery AJAX functionality Summary
21
? ? ? ? ? ? ? ? ? AJAX in ASP.NET MVC https://softuni.bg/trainings/1230/asp-net-mvc-october-2015
22
SoftUni Diamond Partners
23
License This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International 23 Attribution: this work may contain portions from "ASP.NET MVC" course by Telerik Academy under CC-BY-NC-SA licenseASP.NET MVCCC-BY-NC-SA
24
Free Trainings @ Software University Software University Foundation – softuni.orgsoftuni.org Software University – High-Quality Education, Profession and Job for Software Developers softuni.bg softuni.bg Software University @ Facebook facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity Software University @ YouTube youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity Software University Forums – forum.softuni.bgforum.softuni.bg
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.