Загрузка частичного представления с формой редактирования не перегружается правильно - PullRequest
2 голосов
/ 15 декабря 2011

Я пытаюсь загрузить форму редактирования, которая является PartialView, в div с помощью jQuery.Я перегружаю действие EditUser.Первый - для передачи идентификатора и загрузки формы с существующими деталями.Второй - для отправки обратно формы для сохранения.Но, кажется, вызывает 2-й метод, когда я загружаю с использованием jQuery и Url.Action.Если я закомментирую 2-й метод EditUser, то он вызывает 1-й метод.Это почему?Как я могу заставить его позвонить 1-й, когда я передаю 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();
}

1 Ответ

1 голос
/ 15 декабря 2011

Согласно jQuery .load ()"Метод POST используется, если данные предоставляются как объект; в противном случае предполагается GET." Поскольку вы предоставляете данные, .load() использует метод "POST", поэтому вызывается ваш второй EditUser().

...