Asp.net mvc 通过AJAX将JSON连接到MVCAPI控制器

Asp.net mvc 通过AJAX将JSON连接到MVCAPI控制器,asp.net-mvc,json,Asp.net Mvc,Json,因此,我试图通过将一些JSON通过ajax发布到MVCAPI控制器,向一些博客文章添加一个类似的函数 型号: public class Blog{ public int ID{get;set;} public string Title{get;set;} //Some more stuff public virtual ICollection<Likes> Likes {get;set;} } public class Likes{ public int

因此,我试图通过将一些JSON通过ajax发布到MVCAPI控制器,向一些博客文章添加一个类似的函数

型号:

public class Blog{
  public int ID{get;set;}
  public string Title{get;set;}
  //Some more stuff
  public virtual ICollection<Likes> Likes {get;set;}
}    

public class Likes{
  public int ID{get;set;}
  public string UserName{get;set;}
  //Some more stuff
  public virtual Blog Blog{get;set;}
}
以下返回在ajax调用中传递到JSON.stringify:

var UserName = "Dave";
//More stuff
var Blog = "????";

return {UserName:UserName, More Stuff, Blog:Blog}
所以最后一行是我的问题,我想,我应该为博客传递什么?我尝试使用博客的ID,但在控制器中仍然为空。控制器似乎想要一个完整的博客模型,而不仅仅是ID,有没有办法解决这个问题,或者我做了什么坏事

TLDR我猜是:当向控制器发送JSON时,向模型中的公共虚拟博客Blog{get;set;}字段传递什么

另外,当我没有将博客作为JSON的一部分时,我的代码就可以工作。

如果你发布了一个类似的帖子,那么这可能就可以了

{
 ID : 789 //ID of the Like
 UserName : "Username",
 Blog : {
   ID : 789 //id of the blog
  }
}
通过这种方式,您将拥有博客的id,并将正确映射

但我建议您为以下结构创建一个单独的视图模型

public LikeAjax
{
 public string UserName{get; set;}
 public int BlogId {get; set;}
}
然后发送json,如下所示

{
 UserName : "User Name",
 BlogId : 789
}

谢谢,这确实在控制器中设置了博客的ID,但是看起来它只是创建了一个只填充了ID的空白博客,因此文章没有通过ModelState。是否有效?这就是为什么我主张使用单独的视图模型
{
 UserName : "User Name",
 BlogId : 789
}