2

我正在尝试使用 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();
}
4

1 回答 1

1

根据 jQuery .load() “如果数据作为对象提供,则使用 POST 方法;否则,假定为 GET。” 由于您正在提供数据,.load()因此正在使用“POST”方法,因此您的第二个EditUser()被调用。

于 2011-12-14T23:16:10.787 回答