2017-01-26 1 views
0

C# MVC를 사용하려고하는데 다음 문제가 발생했습니다. 나는 일종의 작업 관리 도구 인 작은 프로젝트를 가지고 놀고있다. 이 순간에는 2 (사용자, 작업) 모델과 해당 컨트롤러 및 뷰 집합이 있습니다. 사용자 정의 컨트롤에는 폼에서받은 데이터를 기반으로 새 사용자를 만드는 '만들기'메서드가 있습니다. 사용자가 생성되면 작업이 자동으로 만들어 져야합니다. 여기 내 사용자 컨트롤러 방법 작성/등록 할 수 있습니다 :보기를 직접 피하는 다른 컨트롤러 방법으로 리디렉션

여기
public ActionResult Create() 
    { 
     return View(); 
    } 


    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "userId,dateCreated,dateRemoved,level,firstName,lastName,login,emailAddress,password")] User user) 
    { 
     user.dateCreated = DateTime.Now; 
     if (ModelState.IsValid) 
     { 
      db.User.Add(user); 
      db.SaveChanges(); 

      return RedirectToAction("Create", "Tasks", new { Id = user.userId }); 


      //return RedirectToAction("Index"); 
     } 

     return View(user); 
    } 

가 작업 컨트롤러의 작업 만들기 방법입니다

public ActionResult Create() 
    { 
     return View(); 
    } 


    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "taskId,dateCreated,dateAssigned,userId,assigneeId,taskCategory,taskType,taskPriority,taskStatus,taskName,dateDue,dateClosed,Comments")] Task task, int? Id) 
    { 
     task.dateCreated = DateTime.Now; 

     if (Id != null) 
     { 
      task.userId = (int)Id; 
      task.dateAssigned = DateTime.Now; 
      task.dateCreated = DateTime.Now; 
      task.dateDue = DateTime.Now.AddDays(7); 
      task.taskCategory = taskCategory.assigned; 
      task.taskType = taskType.System_Induction; 
      task.assigneeId = 2; 
      task.taskPriority = taskPriority.Low; 
      task.taskName = "Iduction to TaskManagementTool"; 
      task.Comments = "Please go through the following training materials:"; 
      task.taskStatus = taskStatus.Assigneed; 



      if (ModelState.IsValid) 
      { 

       db.Tasks.Add(task); 


       db.SaveChanges(); 

       ViewBag.TaskAssignedNotification = "Hello " + Session["login"].ToString() + " you have new task assigned" ; 


       switch (Session["level"].ToString()) 
       { 
        case "Basic": 
         return RedirectToAction("LoggedAsBasic", "Home"); 
         break; 

        default: 
         return RedirectToAction("LoggedAsBasic", "Home"); 
       } 

       //return RedirectToAction("Index", "Home"); 
      } 
     } 
     else 
     { 
      task.userId = Int32.Parse(Session["userId"].ToString()); 
      task.taskStatus = taskStatus.Created; 


      if (Session["level"].ToString() == "Assigner" && task.taskCategory == taskCategory.assigned) 
      { 
       task.dateAssigned = DateTime.Now; 


      } 





      if (Session["level"].ToString() == "Basic") 
       task.taskCategory = taskCategory.own; 

      if (ModelState.IsValid) 
      { 

       db.Tasks.Add(task); 


       db.SaveChanges(); 


       return RedirectToAction("TasksIndex"); 
      } 
     } 
     return View(task); 
    } 

새 사용자에게 이드의 방법을 만들기 위해 통과해야 새 사용자를 만드는 동안 HTML 양식으로 작성보기를 열지 않고 태스크 제어기 및 사전 정의 된 태스크 (if (Id! = null)에서)를 새 사용자에 대해 작성해야합니다. Unfortunatley 사용자 컨트롤러에서 작업 컨트롤러의 Create 메서드를 호출 할 수 없습니다. 기껏해야 나는 채워질 작업을 만들어야합니다. 당신은 사람들이 나를 도울 수 있습니까?

+0

죄송합니다, 모두 "등록"작업 컨트롤러의 "생성"방법에서 사용자 컨트롤러 점 OG 방법을 "만들기" – Lotekh

+0

당신의/작업이/메소드를 작성하는 것은 다른 곳에서는 사용할 수 없습니다 것 같다 , 그리고 그것은 사용자 생성 시점에 사용자에게 묶여 있습니다./task/create [HttpGet] 메소드를 제거하고 사용자 ID를 [HttpPost]에 전달하면됩니다. 폼이 채워지고 전달되지 않고 초기화 작업 만 수행 중이기 때문에 바인딩을 수행하거나 폼이 유효한지 확인할 필요가 없습니다. – nocturns2

+1

'TaskController'의'Create()'메소드는 ID를위한 매개 변수를 필요로합니다 -'public ActionResult Create (int ID)', 그리고 모델의 새로운 인스턴스를 초기화하고,'UserID'를 설정하고 model to the view –

답변

0

나는이 경우 사용자/생성 작업 메서드와 함께 생성 된 새 작업 개체가 필요하므로 사용자는 다른 컨트롤러/actionresult를 사용하여 작업을 만들지 않아도됩니다.

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "userId,dateCreated,dateRemoved,level,firstName,lastName,login,emailAddress,password")] User user, Task task) 
    { 
     user.dateCreated = DateTime.Now; 
     if (ModelState.IsValid) 
     { 
      db.User.Add(user); 
      db.SaveChanges(); 

      task.userId = 2; 
      task.dateAssigned = DateTime.Now; 
      task.dateCreated = DateTime.Now; 
      task.dateDue = DateTime.Now.AddDays(7); 
      task.taskCategory = taskCategory.assigned; 
      task.taskType = taskType.System_Induction; 
      task.assigneeId = user.userId; 
      task.taskPriority = taskPriority.Low; 
      task.taskName = "Iduction to TaskManagementTool"; 
      task.Comments = "Please go through the following training materials:"; 
      task.taskStatus = taskStatus.Assigneed; 

      if (ModelState.IsValid) { 


       db.Tasks.Add(task); 
       db.SaveChanges(); 



      } 


      return RedirectToAction("Index"); 
     } 

     return View(user); 
    } 
관련 문제