J'ai un projet MVC4 où j'ai utilisé NuGet pour installer jQuery 3.1.0 et Microsoft.jQuery.Unobtrusive.Ajax 3.2.3. Mon paquet est le suivant:Conflit entre ajax discret et jQuery
bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
"~/Scripts/jquery-3.1.0.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js",
"~/Scripts/jquery.hoverIntent.minified.js",
"~/Scripts/newScript.js",
"~/Scripts/nav.js"
));
J'ai une vue qui contient un bloc Ajax.BeginForm comme ceci:
@using (Ajax.BeginForm("ValidateBASFID", new AjaxOptions { UpdateTargetId = "ValidateBASFIDError", InsertionMode = InsertionMode.Replace }))
{
<label class="required">BASF ID</label>@Html.ValidationMessageFor(model => model.BASFID, "", new { @class = "text-danger" })
@Html.TextBoxFor(model => model.BASFID, new { style = "width: 50px; margin-right:20px; float:left;", @class = "form-control" })
<input type="submit" value="Validate with BASF ID" class="smallButton" style="float:left;" />
<div id="ValidateBASFIDError" class="validationError text-danger"></div>
<div style="clear:both;"></div>
}
Ce point de bloc à une action de contrôleur comme ceci:
public ActionResult ValidateBASFID(string BASFID)
{
Models.Repositories.SectionRepository _repository = new Models.Repositories.SectionRepository();
MemberVM Member = _repository.ValidateBASFID(BASFID);
if (Member != null)
{
Member.SaveMemberInfo();
return RedirectToAction("Sections", new
{
SectionSignupMasterID = Member.SectionSignupMasterID,
VerificationEmail = Member.Email,
MemberName = Member.FullName
});
}
else
{
ViewBag.Message = "Invalid BASF ID";
return PartialView("_ValidationError");
}
}
L'idée est que j'utiliserai AJAX pour afficher une valeur d'ID et la tester. Si l'ID est valide, je redirige vers la vue Sections. Si l'ID n'est pas valide, un message d'erreur est renvoyé.
Qu'est-ce qui se passe est qu'un ID valide redirige vers la vue Sections, mais la page ne s'affiche pas. La seule chose affichée est l'année. Il dit juste "2016" dans le coin supérieur gauche de la page. La page est également bloquée en essayant de récupérer une image d'un domaine différent.
Si je ne commente que l'ajax discret hors de l'ensemble, la redirection de la vue fonctionne bien (mais je ne peux pas récupérer le message d'erreur si l'ID n'est pas valide). Si je commente seulement le jQuery hors de l'ensemble, la redirection de vue fonctionne bien (mais le code d'autre client est cassé). Pourquoi ces deux bibliothèques de scripts ne semblent-elles pas bien fonctionner ensemble? Que puis-je faire pour obtenir plus d'informations sur ce qui se passe ici? Merci.
Vous faites un ajax tout. Tout le point d'ajax à rester sur la même page. Ils ne redirigent jamais. Faites une soumission normale, et s'il y a une erreur, ajoutez un 'ModelStateError' et renvoyez la vue –