大家好,
我搜索并搜索了如何执行此操作。
我有一个名为Posts.cs的域名模型
public class Posts
{
[Key]
public int PostID { get; set; }
[Required(ErrorMessage="A Title is required for your Post")]
[Display(Name="Title")]
public string PostTitle { get; set; }
[Required(ErrorMessage="This Field is Required")]
[Display(Name = "Post")]
public string PostContent { get; set; }
[Required()]
[DataType(DataType.DateTime)]
public DateTime PostDate { get; set; }
//public int AuthorID { get; set; }
//public int CommentID { get; set; }
[NotMapped]
public virtual List<Comments> Comment { get; set; }
public virtual Users user { get; set; }
}
所以我创建了一个名为PostsVM.cs的viewModel,以便将它呈现给视图并获取PostTitle和PostContent,因为它们是唯一需要编辑的字段
public class PostsVM
{
[Required()]
[Display(Name="Title")]
public string PostTitle { get; set; }
[Required()]
[Display(Name="Post")]
public string PostContent { get; set; }
}
由于帖子属于用户,因此行
public virtual Users user { get; set; }
在Posts.cs类中。那是当我将帖子保存到数据库时,我必须将它与作为帖子作者的用户ID一起保存。我的控制器看起来像这样
[HttpGet]
public ActionResult Create()
{
PostsVM model = new PostsVM();
return View(model);
}
[HttpPost]
public ActionResult Create(PostsVM model)
{
if (!ModelState.IsValid)
{
ModelState.AddModelError("", "Invalid Model");
}
BlogContext db = new BlogContext();
var newPost = db.Post.Create();
newPost.PostTitle = model.PostTitle;
newPost.PostContent = model.PostContent;
newPost.PostDate = DateTime.Now;
FormsIdentity identity = (FormsIdentity)User.Identity;
int nUserID = Int32.Parse(identity.Ticket.UserData);
newPost.user = Int32.Parse(identity.Ticket.UserData);
db.Post.Add(newPost);
db.SaveChanges();
return RedirectToAction("Index", "Posts");
}
我尝试做的是从存储在故障单中的userData获取userId并将其转换为行中的整数类型
newPost.user = Int32.Parse(identity.Ticket.UserData);
但是,上面的这一行显示为红色的粗线,错误为"Cannot implicitly convert type 'int' to type 'Blogosphere.Models.Users'.
所以我试着这样做
newPost.user.UserID = Int32.Parse(identity.Ticket.UserData);
但我在这一行调试了一个断点,我收到了一个错误
"Object reference not set to an instance of an object."
我知道这样做是错误的,因为它将访问User.cs类的所有属性。请问如何在我存储在故障单中的userdata中获取用户ID并将其保存在
中public virtual Users user { get; set; } property of the Posts.cs class?
有人请帮忙。 StackOverflow非常有用。请?
答案 0 :(得分:0)
newPost.user
属性未初始化,访问newPost.user.UserID
会抛出“对象引用未设置为对象的实例。”