2011-08-10 47 views
0

我正在使用ASP.NET MVC和C#將對象(PO​​CO模型類)插入到數據庫中。請求和響應由JQuery AJAX處理。ASP.NET MVC AJAX模型的虛擬對象爲空

響應是顯示對象數據的強類型局部視圖。然後將部分視圖中的html附加到網頁上。

對象類(Project類)包含一個虛擬對象(狀態類),它具有更多的屬性也應該返回。

我遇到的問題是,當由AJAX處理時,虛擬對象(Status)返回爲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; } 
} 

所以我的問題是如何我得到的項目狀態來無回空當AJAX處理?

+0

您是否嘗試過明確設置Project類的狀態屬性?例如: 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

很酷。你已經解決了這個問題。請將此標記爲「答案」,以便此問題不再顯示在未答覆的列表中。 :) –