que estoy tratando de conseguir mi Ajax.BeginForm para ejecutar una función onSuccess pero me siguen dando en el quemador, el mensaje de error:función MVC Ajax.BeginForm onSuccess no define
UpdateProjectDiv is not defined
return Function.constructor.apply(null, argNames);
Esto es lo que la forma se parece a:
<script type="text/javascript">
$(document).ready(function() {
function UpdateProjectDiv() {
var projid = $("#ddlProjectsManage").val();
$.post("/Manage/ProjectEmployeeList/", { projectid: projid }, function (data) {
populateDiv($("#divProjectsToFill"), data);
});
}
function populateDiv(div, data) {
div.html('');
div.append(data);
}
});
</script>
@using (Ajax.BeginForm("MoveToProject", new AjaxOptions { UpdateTargetId = "divAllEmployeesToFill", OnSuccess = "UpdateProjectDiv" }))
{
[insert non-relevant code here]
<input id="btnMoveEmpsToProject" type="submit" value=">>" />
@Html.Hidden("SelectedProjectID","9999999999999")
}
y mi acción del controlador:
[HttpPost]
public ActionResult MoveToProject(UnassignedEmployeeBindingModel model, int selectedprojectId)
{
var tempteam = _db.SpecTeams.SingleOrDefault(s => s.Name == "N/A" && s.ProjectId == selectedprojectId);
try
{
foreach (var employee in model.UnassignedEmployees)
{
var employeeObj = _db.Employees.SingleOrDefault(e => e.Id == employee.Employee.Id);
if (employee.IsSelected)
{
employeeObj.SpecTeamId = tempteam.Id;
_db.SaveChanges();
}
}
return RedirectToAction("UnassignedEmployeeList");
}
catch (Exception)
{
return RedirectToAction("Index");
}
}
Sin la OnSucess el código que funciona bien, excepto que hacer no se actualiza el div en otro parcial (#divProjectsToFill) automáticamente.
Además parece estar buscando la UpdateProjectDiv función en el archivo jquery.unobtrusive-ajax.js en lugar de en la propia página. Supongo que podría agregar mi función en ese archivo (aunque aún no lo he intentado), pero eso no parece una solución adecuada.
Gracias!
¿Usted intentó definir sus funciones (JavaScript) fuera del '$ (document) ready()'? –
No puedo creer que haya sido así de simple ... ¡Gracias! Ponlo como respuesta para que pueda marcarlo como resuelto. :) – LanFeusT