2011-08-10 3 views
0

ASP.NET MVC와 C#을 사용하여 객체 (POCO 모델 클래스)를 데이터베이스에 삽입하고 있습니다. 요청 및 응답은 JQuery AJAX에 의해 처리됩니다.ASP.NET MVC AJAX 모델의 가상 객체가 null입니다.

응답은 개체 데이터를 표시하는 강력한 형식의 부분보기입니다. 부분 뷰의 html이 웹 페이지에 추가됩니다.

개체 클래스 (Project 클래스)에는 반환해야 할 속성이 더 많은 가상 개체 (Status 클래스)가 들어 있습니다.

내가 겪고있는 문제는 가상 객체 (상태)가 AJAX에 의해 처리 될 때 null로 반환된다는 것입니다. 그러나 AJAX를 비활성화하면 포스트 백이 올바른 가상 객체 데이터를 표시합니다.

많은 도움이 될지 모르지만 여기에는 내 코드의 일부가 나와 있습니다.

컨트롤러 액션

public ActionResult AddProject(UpdateProjectModel model) 
    { 
     System.Guid guid = System.Guid.NewGuid(); 

     var project = new Project 
     { 
      Guid = guid.ToString(), 
      JobNumber = model.JobNumber, 
      Title = model.Title, 
      Client = model.Client, 
      Details = model.Details, 
      StatusID = model.StatusID, 
      LastModified = DateTime.Now 
     }; 

     _projectService.AddProject(project); 

     if (Request.IsAjaxRequest()) 
     { 
      var newProject = _projectService.GetProjectByGuid(project.Guid); 

      return PartialView("Project", newProject); 
     } 
     else 
     { 
      return RedirectToAction("Index"); 
     } 
    } 

프로젝트 클래스

public class Project 
{ 
    [Key] 
    public int ProjectID { get; set; } 

    public string Guid { get; set; } 

    public string JobNumber { get; set; } 

    public string Title { get; set; } 

    public string Client { get; set; } 

    public string Details { get; set; } 

    public int StatusID { get; set; } 

    public DateTime LastModified { get; set; } 

    public virtual Status Status { get; set; } 
} 

상태 클래스

public class Status 
{ 
    [Key] 
    public int StatusID { get; set; } 

    public string StatusText { get; set; } 
} 

그래서 제 질문은 내가 널 (null)을 반환하지 않도록 프로젝트의 상태를 확인하는 방법을 AJAX에 의해 처리 될 때 ?

+0

Project 클래스의 Status 속성을 명시 적으로 설정해 보셨습니까? 예 : if (Request.IsAjaxRequest()) { var newProject = new Project {Status = new Status {StatusText = "Testing"}}}; return PartialView ("Project", newProject); } 그냥 _projectService.GetProjectByGuid (project.Guid)가 아닌지 확인하십시오. 설정하지 않습니까? – smoak

+0

GetProjectByGuid 메서드에서 가상 상태를 '포함'하는 것을 잊어 버렸습니다. 이제 작동합니다. – James

+0

위대한, 당신은 자신의 질문을 삭제할 수 있습니까? 감사합니다 –

답변

1

GetProjectByGuid 메서드에서 가상 상태를 '포함'하는 것을 잊어 버렸습니다. 이제 작동합니다.

+0

차가운. 문제를 해결했습니다. 이 질문을 더 이상 응답하지 않는 목록에 표시 할 수 없도록 "답변"으로 표시하십시오. :) –