Dies sollte nur das UpdateTarget ersetzen, aber es nicht, es ersetzt die gesamte Seite und ich sehe nicht warum. Die richtige Teilansicht wird zurückgegeben, ersetzt jedoch nicht die Ziel-ID, sondern ersetzt die gesamte Seite.Warum aktualisiert Ajax.ActionLink ganze Seite statt nur UpdateTarget
<div id="magHeader">
<p>this is a test.</p>
@Ajax.ActionLink("Edit", "GetEditor", "Home", new AjaxOptions(){ UpdateTargetId = "magHeader", InsertionMode = InsertionMode.Replace})
</div>
Zur Laufzeit sieht der Link wie folgt:
<a href="/Home/GetEditor" data-ajax-update="#magHeader" data-ajax-mode="replace" data-ajax="true">Edit</a>
Gibt es etwas, was ich falsch mache? Habe das in der Vergangenheit erfolgreich ohne Probleme gemacht.
bearbeiten Der Grund für dieses Problem ist, dass in VS 2012, nur hinzufügen benötigt einen Verweis auf die JQueryVal bündeln diese Arbeit zu machen. Im Jahr 2013 wurde BundleConfig.cs jedoch geändert, sodass das JQueryVal-Bundle JQuery.Unobtrusive nicht mehr enthält. Also die einfache Lösung ist, es wieder in das Bündel hinzuzufügen:
Dann wird alles wie erwartet funktionieren.
OK, also habe ich das Video angeschaut und das ist genau das Problem, das ich habe. Es ist jedoch immer noch nicht gelöst. Ausgehend von einem neuen Projekt in VS 13 befolge ich die Schritte im Video und stelle sicher, dass jqueryval enthalten ist. Aber die ganze Seite ist immer noch ersetzt. In FireFox kann ich die Registerkarte Skripts überprüfen und sehen, dass jqueryval sowie jquery.validate.unobtrusive.js geladen wird. Es macht also keinen Sinn. –
Haben Sie diese Pakete hinzugefügt (Ich habe meine Antwort bearbeitet) – Mitul
Ich habe überprüft und diese Pakete wurden nicht installiert. Also habe ich sie installiert. Allerdings bekomme ich immer noch das gleiche Ergebnis - die Seite wird ersetzt, nicht die ID. –