Ajax.BeginForm ne déclenche pas le script AJAX, retombe sur la publication

Je mettrai à jour ce problème avec la solution, je voulais inclure mon problème et la solution que je n'ai pas pu le trouver sur Stackoverflow. Si vous voulez sauter avec la solution, n'hésitez pas.

J'ai récemment créé, le "Vide", MVC5 projet créé à l'aide de Visual Studio 2013. Que j'avais besoin de partir et je voulais AJAX problème si possible. L'Utilisation D'Ajax.BeginForm a toujours été directe dans MVC3 j'ai donc pensé qu'il serait en MVC5 aussi.

Cependant aucune des fonctions javascript que j'ai spécifié dans OnBegin, OnFailure ou OnSuccess à l'intérieur de la AjaxOptions sont invoquées lorsque je clique sur le bouton "soumettre". Au lieu d'un Ajaxless post est envoyé au serveur, ce qui a démontré par l'examen de la Demande.IsAjaxRequest qui renvoie la valeur false.

J'en ai conclu que pour une raison quelconque, alors, ajax n'est pas utilisé du tout. J'ai vérifié un certain nombre de choses telles que le web.config, ma mise en page des scripts, etc.

Ma mise en page comprend les scripts suivants:

<script src="~/Scripts/jquery-1.5.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

De mon site web.config comprend:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>

Mon point de vue:

@model ContactEnquiryViewModel
@{
AjaxOptions ContactOptions = new AjaxOptions()
{
OnBegin = "OnConactFormBegin()",    
OnSuccess = "OnContactFormSuccess()",
OnFailure = "OnContactFormFailure()"
};
}
<div id="EnquiryFormContainer">
@using (Ajax.BeginForm("Contact", "Home", new { formName = "EnquiryForm" }, ContactOptions))
{
@Html.HiddenFor(m => m.Subject)
<div class="field">
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
<div class="validation">
@Html.ValidationMessageFor(m => m.FirstName)
</div>
</div>
<div class="field">
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
<div class="validation">
@Html.ValidationMessageFor(m => m.LastName)
</div>
</div>
<div class="field">
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
<div class="validation">
@Html.ValidationMessageFor(m => m.Email)
</div>
</div>
<div class="field">
@Html.LabelFor(m => m.PhoneNumber)
@Html.TextBoxFor(m => m.PhoneNumber)
<div class="validation">
@Html.ValidationMessageFor(m => m.PhoneNumber)
</div>
</div>
<div class="field">
@Html.LabelFor(m => m.Comments)
@Html.TextAreaFor(m => m.Comments)
<div class="validation">
@Html.ValidationMessageFor(m => m.Comments)
</div>
</div>
<div id="submitButtonContainer">
<input type="submit" value="Submit" name="submit" />
</div>
}
</div>

Mon contrôleur de l'action (inachevé):

[HttpPost]
public ActionResult Contact(ContactViewModel viewModel, String formName = "")
{
if (Request.IsAjaxRequest())
{
return new EmptyResult();               
}
return new EmptyResult();
}

J'ai vérifié certains autres messages sur ce problème, et je ne pouvais pas trouver une solution. Si certains y ont fait allusion à la possible solution, j'ai été confondu par Microsoft CDN (http://www.asp.net/ajaxlibrary/cdn.ashx).

Sur le Microsoft CA qu'ils ont de l'article suivant:

La suite ASP.NET MVC JavaScript, les fichiers sont hébergés sur ce CDN:

ASP.NET MVC 5.0
http://ajax.aspnetcdn.com/ajax/mvc/5.0/jquery.validate.unobtrusive.js
http://ajax.aspnetcdn.com/ajax/mvc/5.0/jquery.validate.unobtrusive.min.js
ASP.NET MVC 4.0
http://ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.js
http://ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.min.js
ASP.NET MVC 3.0
http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.js
http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.min.js
http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js
http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js
http://ajax.aspnetcdn.com/ajax/mvc/3.0/MicrosoftMvcAjax.js
http://ajax.aspnetcdn.com/ajax/mvc/3.0/MicrosoftMvcAjax.debug.js 
ASP.NET MVC 2.0
http://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcAjax.js
http://ajax.aspnetcdn.com/ajax/mvc/2.0/MicrosoftMvcAjax.debug.js 
ASP.NET MVC 1.0
http://ajax.aspnetcdn.com/ajax/mvc/1.0/MicrosoftMvcAjax.js
http://ajax.aspnetcdn.com/ajax/mvc/1.0/MicrosoftMvcAjax.debug.js 

Ils semblent suggérer le seul script que vous aurez besoin pour MVC5 est jquery.valider.discrète.

source d'informationauteur Tentux