【问题标题】:Loading partial view with an Edit Form doesn't overload correctly使用编辑表单加载部分视图不会正确重载
【发布时间】:2011-12-14 22:05:54
【问题描述】:

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

【问题讨论】:

    标签: forms asp.net-mvc-3 razor asp.net-mvc-partialview


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复!我将代码更改为以下... $('#AddViewEditUser').load("@Url.Action("EditUser","User", new { staffId = "sId" } )");所以现在它正在调用第一种方法。我必须弄清楚如何访问局部变量,而不是硬编码“sId”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多