我已经搜索了如何处理它,但到目前为止我一无所获。这是我的问题,我有一个帖子模型和一个评论模型。我的 CreateView 具有创建帖子的输入,并且它也显示在此创建视图中。让我们看看代码:
EDIT2:在我的 PostController 中添加 CreateComment 操作结果;& 我的部分 ListPost 视图中的 ActionLink
现在我可以看到我添加评论的链接,它将我发送到我的 CreateComment 视图中,但是当我尝试将它保存在我的数据库中时,我遇到了这个错误:
INSERT 语句与 FOREIGN KEY 约束 \"FK_dbo.Comments_dbo.Posts_PostId\" 冲突。数据库 \Myproject"、表 \"dbo.Posts\"、列 'PostId' 中发生冲突。\r\n语句已终止。"
后控制器
public ActionResult ListPost()
{
var post = db.Posts.ToList();
return PartialView("ListPost", post);
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(FormCollection values)
{
var post = new Post();
TryUpdateModel(post);
if (ModelState.IsValid)
{
var context = new UsersContext();
var username = User.Identity.Name;
var user = context.UserProfiles.SingleOrDefault(u => u.UserName == username);
var userid = user.UserId;
post.UserId = userid;
post.Date = DateTime.Now;
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Create", "Post");
}
return View(post);
}
public ActionResult CreateComment()
{
ViewBag.PostId = new SelectList(db.Posts, "PostId", "Content");
return View("CreateComment");
}
[HttpPost]
public ActionResult CreateComment(FormCollection values)
{
var comment = new Comment();
TryUpdateModel(comment);
if (ModelState.IsValid)
{
var context = new UsersContext();
var username = User.Identity.Name;
var user = context.UserProfiles.SingleOrDefault(u => u.UserName == username);
var userid = user.UserId;
comment.UserId = userid;
comment.Date = DateTime.Now;
db.Comments.Add(comment);
db.SaveChanges();
return RedirectToAction("Create", "Post");
}
ViewBag.PostId = new SelectList(db.Posts, "PostId", "Content", comment.PostId);
return View(comment);
}
创建视图:
@model Myproject.Models.Post
@using (Html.BeginForm("Create", "Post", FormMethod.Post))
{
<legend>Add Post</legend>
<div class="editor-field">
@Html.EditorFor(model => model.Content)
@Html.ValidationMessageFor(model => model.Content)
<input type="file" name="Photo" id="Photo"/>
</div>
<p>
<input type="submit" value="Post" />
</p>
}
@{Html.RenderAction("ListPost", "Post");}
列表帖子视图
@model IEnumerable<MyProject.Models.Post>
@foreach (var item in Model.OrderByDescending(x => x.Date))
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Content)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(modelItem => item.Date)
<span>@Html.DisplayFor(modelItem => item.Users.UserName)</span>
</td>
</tr>
<tr>
<td> @Html.ActionLink("Add Comment", "CreateComment", new {id=item.PostId})</td>
</tr>
}
现在,我想在帖子中添加评论。我的评论模型(和表)有一个 postId 属性。如何将我的 createCommentView 包含在我的 ListPost 视图中,我认为我必须将它包含在此视图中而不是我的 CreatePostView 中,但我也不确定。在这两种情况下,我都不知道该怎么做,因为我在同一个视图中使用了评论模型和帖子模型......
有什么想法,可以发给我的链接,还是什么?谢谢,对不起我的英语不好