【发布时间】:2011-07-30 08:04:49
【问题描述】:
我正在尝试让我的 Ajax.BeginForm 运行 OnSuccess 函数,但我一直在 firebug 中收到错误消息:
UpdateProjectDiv is not defined
return Function.constructor.apply(null, argNames);
表单如下所示:
<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")
}
我的控制器操作:
[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");
}
}
没有 OnSucess 代码可以正常工作,只是它不会自动刷新另一个部分 (#divProjectsToFill) 中的 div。
此外,它似乎在 jquery.unobtrusive-ajax.js 文件中而不是在页面本身上寻找函数 UpdateProjectDiv。我想我也许可以在那个文件中添加我的函数(虽然我还没有尝试过),但这听起来不是一个合适的解决方案。
谢谢!
【问题讨论】:
-
您是否尝试在
$(document).ready()之外定义您的 (JavaScript) 函数? -
不敢相信这么简单...谢谢!将其作为答案,以便我可以将其标记为已解决。 :)
标签: javascript jquery asp.net-mvc-3 razor