【问题标题】:ASP.NET MVC AJAX model's virtual object is nullASP.NET MVC AJAX 模型的虚拟对象为空
【发布时间】:2011-08-10 17:19:41
【问题描述】:

我正在使用 ASP.NET MVC 和 C# 将对象(PO​​CO 模型类)插入数据库。请求和响应由 JQuery AJAX 处理。

响应是显示对象数据的强类型局部视图。然后将部分视图中的 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; }
}

所以我的问题是如何让项目状态在 AJAX 处理时不返回 null?

【问题讨论】:

  • 您是否尝试过明确设置项目类的状态属性?类似于: if (Request.IsAjaxRequest()) { var newProject = new Project { Status = new Status { StatusText = "Testing" } }; return PartialView("Project", newProject);只是为了确保它不是你的 _projectService.GetProjectByGuid(project.Guid);那不是设置吗?
  • 刚刚注意到我忘记在 GetProjectByGuid 方法中“包含”虚拟状态!现在可以了。
  • 太好了,您可以删除自己的问题吗?谢谢

标签: c# asp.net asp.net-mvc ajax


【解决方案1】:

我忘记在 GetProjectByGuid 方法中“包含”虚拟状态。现在可以了。

【讨论】:

  • 酷。你已经解决了这个问题。请将此标记为“答案”,以便此问题不再出现在未回答列表中。 :)
猜你喜欢
  • 2011-11-22
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
相关资源
最近更新 更多