ASP.NET MVCとC#を使用してオブジェクト(POCOモデルクラス)をデータベースに挿入しています。要求と応答はJQuery AJAXによって処理されます。ASP.NET MVC AJAXモデルの仮想オブジェクトがnullです
レスポンスは、オブジェクトデータを表示する強く型付けされた部分ビューです。部分ビューからのHTMLは、Webページに追加されます。
オブジェクトクラス(Projectクラス)には、返されるプロパティも多く含まれる仮想オブジェクト(Statusクラス)が含まれています。
私が抱えている問題は、仮想オブジェクト(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");
}
}
Projectクラス
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
あなた自身の質問を削除できますか?ありがとう –