2014-03-28 7 views
0

잘못된 뷰를 반환하는 컨트롤러 메서드가 있습니다. 내가 가지고있는보기는 컨트롤러 메소드 "AssignTask.cshtml"과 같은 이름입니다. 이 메서드는 "public 가상 ActionResult AssignTask (ManageTaskModel 모델)"컨트롤러 메서드에 잘못된 뷰가 반환되었습니다.

내가 잘못하고있는 것을 누구든지 볼 수 있습니까?

[HttpGet] 
public virtual ActionResult ManageTasks() 
{ 
    try 
    { 
     var model = new ManageTaskModel(); 
     model.assignedPSUsers = Orchestrator.GetAssignedPSUsers(); 
     return View(model); 
    } 
    catch (Exception e) 
    { 
     ModelState.AddModelError("ErrorMsg", e.Message); 
    }; 

    return this.RedirectToAction("Index"); 
} 

[HttpPost] 
public virtual ActionResult ManageTasks(ManageTaskModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 
    try 
    { //User has seleced the user that they want to see Tasks for 
     if (model.selectedUser != null && model.newUser==null) 
     { 
      model.assignedPSUsers = Orchestrator.GetAssignedPSUsers(); 
      model.FcvsTaskList = Orchestrator.GetTasksForAssignedPSUser(model.selectedUser); 

      return AssignTask(model); 
     } 

    } 
    catch (Exception e) 
    { 
     ModelState.AddModelError("ErrorMsg", e.Message); 
     return View(model); 
    } 
    return this.RedirectToAction("Index"); 

} 

[HttpGet] 
public virtual ActionResult AssignTask(ManageTaskModel model) 
{ 
    if (model.selectedUser != null && model.newUser == null) 
    { 


     **return View(model);** //returning the ManageTask instead of AssignTask View 

    } 

    return this.RedirectToAction("Index"); 
} 

답변

1

ManageTasks 조치에서 AssignTask (모델)을 리턴합니다. 이는 요청 컨텍스트가 사용자가 실제로 ManageTasks를 호출했음을 기억하기 때문에 작동하지 않습니다. 이것이 ManageTasks에 대한 뷰를 반환하는 이유입니다.

수행하는 올바른 방법은 그와 같다 :

return RedirectToAction("AssignTask", model); // remember to pass the model here 

당신은 AssignTask에서이 줄을 세우면 것을 볼 수 있습니다

HttpContext.Request.Path 

당신이 (귀국일 AssignTask를 사용하여 ManageTasks에서 액세스하는 경우 모델) 값은 "/ YourController/ManageTasks"가됩니다.

브라우저에서 직접이 작업을 호출하거나 RedirectToAction을 사용하여 값을 "/ YourController/AssignTask"로 지정합니다.

0

그런 식으로 리디렉션 할 수 없습니다. AssignTask를 반환하는 대신

return RedirectToAction("AssignTask"); 

을 입력하고 거기에 ID 등을 전달하십시오. AssignTask 메소드에서 모델을 다시 작성해야합니다.

관련 문제