MVC: pass parameter Aktion mit Jquery.ajax()
Bin ich ziemlich neu MVC
. Ich brauche, um ajax
Aufruf einer Action
mit Parametern mit html.Action()
. Ich bin nicht in der Lage zu gehen..
Hoffe, es wird hilfreich sein für andere MVC begineers.
HTML:
<%: Html.ActionLink("Add Race", "AddRace",
new {eventId = Model.EventId, fleetId=Model.SelectedFleet.ID},
new{@onclick=string.Format("return checkFleetAddedandScroing()")}) %>
Jquery:
function checkFleetAddedandScroing() {
debugger;
$.ajax({
type: "GET",
url: '<%=Url.Action("CheckFleetExists")%>',
dataType: "json",
cache: false,
success: function (data, textStatus) {
data = eval("(" + data + ")");
if (data == true) {
return true;
}
else {
alert("Cannot Add race becasue you have not yet added any fleets and fleet scoring is checked.");
return false;
}
}, //success
error: function (req) {
}
});
}
Aktion:
public JsonResult CheckFleetExists(Guid fleetId )
{
bool exists = false;
try
{
exists = !db.Races.Any(r => r.FleetID == fleetId);
}
catch
{
}
return Json(exists, JsonRequestBehavior.AllowGet);
}
Muss ich weiterleiten fleetid
zu handeln, die in Model.SelectedFleet.ID
. Deren Einsatz irgendwo auf den Seiten. Aber ich bin nicht in der Lage zu verwenden, irgendwie..
bitte vorschlagen, wo ich falsch mache...
haben Sie überprüft, ob Ihre Aktion auf?
Nein..nicht schlagen...sondern es zeigt die Warnmeldung, die ist geschrieben in der else-Teil zum Erfolg.
Es ist nicht getroffen, denn die Aktion
ich glaube, Sie haben zwei Fehler, einen Vorschlag durch agarhy.und die zweite ist das @ - Zeichen vor dem onclick.
Und, by the way, es gibt einen Grund, warum die
Nein..nicht schlagen...sondern es zeigt die Warnmeldung, die ist geschrieben in der else-Teil zum Erfolg.
Es ist nicht getroffen, denn die Aktion
CheckFleetExists
wird immer false zurück, und Ihre JavaScript-Funktion immer false zurück als gut. Wo oder wie sind Sie mit der Weitergabe einer GUID CheckFleetExists
?ich glaube, Sie haben zwei Fehler, einen Vorschlag durch agarhy.und die zweite ist das @ - Zeichen vor dem onclick.
Und, by the way, es gibt einen Grund, warum die
Json
Methode nicht standardmäßig erlauben für GET-Anforderungen. Es ist zu verhindern, dass hijacking. Betrachten Sie eine POST-Anfrage für die JSON-Daten statt.
InformationsquelleAutor Mayank Pathak | 2012-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Sie versuchen, zu berufen, eine controller-action mit AJAX, wenn der link angeklickt wird und je nach dem Ergebnis dieser Aufruf entweder zulassen, dass die Benutzer umgeleitet werden, um die tatsächliche
AddRace
Aktion oder aufgefordert, mit einer Fehlermeldung.Das problem mit deinem code ist, dass Sie versuchen, um return true/false innerhalb der Erfolg AJAX-callback, das macht keinen Sinn. Sie müssen immer false zurückgeben, von der Sie auf Rückruf und im Erfolgs-callback, abhängig vom zurückgegebenen Wert vom server, redirect manuell über die
window.location.href
Funktion.HTML:
Jquery:
Aktion:
Anmerkung: innerhalb Ihres
AddRace
controller-action vergessen Sie nicht, führen Sie die gleiche Prüfung wie Sie tun in IhremCheckFleetExists
. Der Benutzer könnte einfach deaktivieren von javascript und der AJAX-Aufruf wird nie getan werden.Ich habe aktualisiert, meine Antwort entsprechend. In deinem Beispiel sind Sie immer noch die true/false innerhalb der Erfolgs-callback, das ist falsch. Sie sind nicht false zurückgeben, innerhalb der
checkFleetAddedandScroing
Funktion selbst, und so sind Sie nicht im Abbrechen der Standard-Aktion.ohh, dass ist der Grund, warum es immer wieder falsch..und zeigt message-box jedes mal..und leiten, unabhängig von
return false
Aussage..ist das richtig Darin..?Es ist immer leitet, weil Sie nie false zurückgeben, von Ihrem click-handler, was nicht Recht ist.
Sorry Darin, nicht die Annahme Ihrer Antwort zuvor. 😀 gut danke eine Tonne für die machen mir mehr Klarheit über
$.ajax()
..ich war etwas verwirrt..aber stackoverflow.com/questions/9422215/... von Ihr hat Super funktioniert für mich..du bist echtMVC
Mann auf SO..vielen Dank.. 🙂InformationsquelleAutor Darin Dimitrov
ändern Sie Ihre Aktion wie folgt :
und ändern Sie ActionLink so :
und dein script block kann wie folgt Aussehen :
checkFleetAddedandScroing
JavaScript-Funktion als gut. Ich glaube nicht, dass er übergeben, Daten an die action im AJAX-request. Ich bin zu faul um es zu korrigieren jetzt aber. Würden Sie dagegen tun der Ehren? 🙂ja.absolut.vielen Dank für Ihren Vorschlag.
es hat nicht funktioniert, auch wenn Sie nicht in der Lage, zu schlagen Haltepunkt platziert auf Aktion..aber irgendwie habe ich es gelöst..Aber verbessert mich sehr..+1 für dich..
InformationsquelleAutor Behnam Esmaili
Problem war in den Antworten, die url zur Aktion wurde nicht abgeschlossen..ich habe es mit diesem Weg
InformationsquelleAutor Mayank Pathak