Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET Core and JQuery unobtrusive AJAX not working

If I start a new project in .net 4.5 and hit manage nuget packages, search for ajax, then hit install for ajax unobtrusive. I can then go into my cshtml file and type @Ajax.___ e.g. @Ajax.beginForm

If I create a new project with Dot Net Core... I cannot, where instead it gives me the useless error:

"The name 'Ajax' does not exist in the current context"

I've searched the web, found nothing...

Basically I want to make a Form with an Ajax call as you could do in .net

Such as:

"@using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" })) {"

Anyone know what else I can try?

In the above, I can see that Ajax is a object of type AjaxHelper which comes from System.web.mvc.webviewpage... so maybe its never meant to be available for .net core

like image 322
David van Dugteren Avatar asked Jun 21 '17 03:06

David van Dugteren


1 Answers

While the Ajax.BeginForm() methods do not work, the actual unobtrusive Ajax html does. The C# methods just help generate the Html form tags. Forgive me in thse syntax is wrong, this is from memory, but you get the idea

@using (Ajax.BeginForm("EmployeeMaster", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" }))
{
    //form content
}

becomes

<form asp-action="EmployeeMaster" asp-controller="Home" method="POST" data-ajax="true" data-ajax-update="divEmp">
    <!-- form content-->
</form>

NOTE: The above HTML STILL needs the unobtrusive ajax js files for it to wire up these data-* attributes correctly. This is not a part of ASP.NET Core MVC

like image 150
Nick Albrecht Avatar answered Sep 16 '22 17:09

Nick Albrecht