我正在尝试使用jQuery将一个编辑表单(PartialView)加载到div中。我正在重载EditUser操作。第一个用于传递id并使用现有细节加载表单。第二个用于回发表单以进行保存。但是当我使用jQuery和Url.Action加载时,似乎调用了第二种方法。如果我注释掉第二个EditUser方法,那么它会调用第一个方法。这是为什么?当我通过staffID时,如何让它调用第一个?或者是否有更好的方法在局部视图场景中实现此编辑表单?
CreateUser动作工作正常,因为重载方法没有歧义,因为1没有参数,另一个模型作为参数。
由于
这是我的控制者:
public PartialViewResult EditUser(String staffId)
{
User um = userService.GetUserDetails(1, staffId, true);
return PartialView(um);
}
[HttpPost]
public PartialViewResult EditUser(User um)
{
if (!TryUpdateModel(um))
{
ViewBag.updateError = "Edit Failure";
return PartialView("EditUser", um);
}
userService.CreateUpdateUser(um);
return PartialView("ViewUser", um);
}
public PartialViewResult CreateUser()
{
ViewBag.Message = "Create New User";
return PartialView(new User());
}
[HttpPost]
public ActionResult CreateUser(User um)
{
if (!TryUpdateModel(um))
{
ViewBag.updateError = "Create Failure";
return PartialView(um);
}
userService.CreateUpdateUser(um);
return View("Index");
}
这就是我加载EditUser部分视图的方式:
function menuEdit() {
$('#ActionMenu').hide();
$('#SearchBar').hide();
$('#SearchPanel').hide();
$('#SearchResult').hide();
$('#AddViewEditUser').load("@Url.Action("EditUser","User")", {staffId : sId});
$('#AddViewEditUser').show();
}
答案 0 :(得分:1)
根据jQuery .load()“如果数据作为对象提供,则使用POST方法;否则,假定为GET。”由于您提供数据,.load()
正在使用“POST”方法,因此您的第二个EditUser()
正在被调用。