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에 의해 처리 될 때 ?
Project 클래스의 Status 속성을 명시 적으로 설정해 보셨습니까? 예 : if (Request.IsAjaxRequest()) { var newProject = new Project {Status = new Status {StatusText = "Testing"}}}; return PartialView ("Project", newProject); } 그냥 _projectService.GetProjectByGuid (project.Guid)가 아닌지 확인하십시오. 설정하지 않습니까? – smoak
GetProjectByGuid 메서드에서 가상 상태를 '포함'하는 것을 잊어 버렸습니다. 이제 작동합니다. – James
위대한, 당신은 자신의 질문을 삭제할 수 있습니까? 감사합니다 –