2011-12-14 5 views
2

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

function menuEdit() { 
    $('#ActionMenu').hide(); 
    $('#SearchBar').hide(); 
    $('#SearchPanel').hide(); 
    $('#SearchResult').hide(); 
    $('#AddViewEditUser').load("@Url.Action("EditUser","User")", {staffId : sId}); 
    $('#AddViewEditUser').show(); 
} 

ответ

1

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

+0

Спасибо, что ответили! Я изменил свой код на следующий ... $ ('# AddViewEditUser'). Load ("@ Url.Action (" EditUser "," Пользователь ", новый {staffId =" sId "})"); Итак, теперь он вызывает 1-й метод. Я должен выяснить, как получить доступ к локальной переменной, хотя istead hardcoding «sId». – Max

Смежные вопросы