Ajax działa w ten sam sposób, ale zamiast @Ajax pomocnik, należy użyć nowych pomocników MVC 6 Tag (nie zapomnij referencyjna 'jquery' i 'jquery.unobtrusive-Ajax' scripts).
JQuery Unobtrusive Ajax istnieje w repozytorium Asp.Net GitHub i można je wyciągnąć Bower.
Korzystanie nowe TagHelpers MVC, wystarczy zadeklarować formę jak następuje:
<form asp-controller="Home" asp-action="SaveForm" data-ajax="true" data-ajax-method="POST">
...
</form>
Aby użyć AjaxOptions które istniały na Ajax Helper na poprzednich wersjach MVC, wystarczy dodać te atrybuty zrobić tag formularz jak to:
<form asp-controller="Home" asp-action="SaveForm" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#content">
...
</form>
<div id="content"></div>
atrybuty HTML (dawniej AjaxOptions), które można wykorzystać w formie, są następujące (original source):
+------------------------+-----------------------------+
| AjaxOptions | HTML attribute |
+------------------------+-----------------------------+
| Confirm | data-ajax-confirm |
| HttpMethod | data-ajax-method |
| InsertionMode | data-ajax-mode |
| LoadingElementDuration | data-ajax-loading-duration |
| LoadingElementId | data-ajax-loading |
| OnBegin | data-ajax-begin |
| OnComplete | data-ajax-complete |
| OnFailure | data-ajax-failure |
| OnSuccess | data-ajax-success |
| UpdateTargetId | data-ajax-update |
| Url | data-ajax-url |
+------------------------+-----------------------------+
Kolejną istotną zmianą jest sposób sprawdzenia po stronie serwera, jeśli żądanie rzeczywiście jest zgłoszeniem AJAX. W poprzednich wersjach używaliśmy po prostu Request.IsAjaxRequest()
.
Na MVC6, trzeba stworzyć proste rozszerzenie, aby dodać te same opcje, które istniały w poprzednich wersjach MVC (original source):
/// <summary>
/// Determines whether the specified HTTP request is an AJAX request.
/// </summary>
///
/// <returns>
/// true if the specified HTTP request is an AJAX request; otherwise, false.
/// </returns>
/// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
public static bool IsAjaxRequest(this HttpRequest request)
{
if (request == null)
throw new ArgumentNullException("request");
if (request.Headers != null)
return request.Headers["X-Requested-With"] == "XMLHttpRequest";
return false;
}
Dziękuję bardzo za odpowiedź głębokości. Tak więc przy wszystkich powyższych ustawieniach nadal mam to w moim JavaScriptu? $ ("formularz"). submit (function() {$ .ajax ({...});}); Wierzcie lub nie, wszystko działało bez ustawień określonych w deklaracji formularza, oprócz asp-action = "Utwórz". Być może nie rozumiem, jaki jest cel "danych-ajax" i "danych-ajax-metody", a po prostu pisania kodu, którego użyłem powyżej, aby uzyskać AJAX. Czy możesz mi powiedzieć, w jaki sposób te właściwości pomagają w mojej AJAX, ponieważ działała bez? Lub przynajmniej wydawało się, że działa, odkąd skończyłem w akcji Create –
U dołu mojego postu wkleiłem mój kod AJAX. Więc jeśli możesz wyjaśnić, co ci pomocnicy danych-ajax są dobre dla tego, co mam, byłoby wspaniale. Chciałbym wiedzieć, czy potrzebuję obu.Byłoby wspaniale, gdybym nadal mógł korzystać z wbudowanego Unftrusive Validation wraz z AJAX. –
Możesz usunąć ten fragment kodu javascript. Tylko pamiętaj, aby odwoływać się zarówno do Ajax JQuery, jak i JQuery. Pomocnicy danych-ajax zrobią to za Ciebie pod drzewem. –