Intendo chiamare la funzione quando si fa clic su ActionLink e, a seconda dell'output della funzione, passare alla pagina successiva o mostrare un avviso.
Quando OnBegin è true in Ajax.ActionLink, dovrebbe colpire il metodo del controller e quindi passare alla vista specificata. Ma quando faccio clic su ActionLink, OnBegin restituisce true ma non accade nulla. Vedo la stessa pagina.
<script src="~/Scripts/jquery-2.1.0.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
@using (@Html.BeginForm())
{
@Ajax.ActionLink("Add Document", // <-- Text to display
"AddDocument", // <-- Action Method Name
"Home", // <-- Controller Name
null,
new AjaxOptions { OnBegin = "OnBegin("AddDocument")" },
null
)
}
<script type="text/javascript">
function OnBegin(vObject) {
debugger;
return true;
}
</script>
Qualsiasi aiuto sarebbe apprezzato.
Grazie.
risposte:
1 per risposta № 1Penso che tu lo stia usando nel modo sbagliato. @Ajax.ActionLink
colpirà il tuo controller e recupererà il contenuto della risposta ma non hai impostato alcuno spazio per contenere la risposta. Una delle proprietà di AjaxOptions
è UpdateTargetId
che dovrebbe essere impostato su id
tag che conterrà la risposta.
@Ajax.ActionLink("Add Document", "AddDocument", "Home",
new AjaxOptions
{
OnBegin = "OnBegin("AddDocument")",
UpdateTargetId = "responseContent"
})
Nella vista metti un tag per contenere la risposta:
<div id="responseContent"></div>
La risposta verrà inserita all'interno di div
.