我的MVC应用程序中有一个视图,用于显示从数据库收集的视图和注释,并允许用户相应地发布帖子和评论。
Html的相关部分如下:
<div style="background-color:#fff1fc; height:100vh; width:810px; float:left; border-radius: 8px; margin: 5px">
<div>
<p>
<center>
@foreach (var item in Model.PostList)
{
<div style="background-color: white; height:auto; width: 810px; border-radius: 8px; margin: 5px; text-align: left; text-size-adjust: 50%; text-anchor:start; font-size: larger">
@Html.DisplayFor(modelItem => item.Profile.FirstName)
@Html.DisplayFor(modelItem => item.Profile.LastName)
@Html.DisplayFor(modelItem => item.Project.ProjectName)<br/>
<div style="text-align:center; text-size-adjust: auto">
@Html.DisplayFor(modelItem => item.Text)<br/>
</div>
<div style="text-align: right; text-size-adjust: 20%; text-anchor: end">
@Html.DisplayFor(modelItem => item.DATE)
</div>
<hr />
<div style="line-break:initial; font-size:small; text-align: left; margin: 10px; padding: 10px">
@Html.Label("Comments:")<br/>
<br/>
@foreach (var comment in Model.CommentList)
{
if (comment.PostId == item.Id)
{
@Html.DisplayFor(modelComment => comment.Profile.FirstName)
@Html.DisplayFor(modelComment => comment.Profile.LastName)
<br/>
<center>
@Html.DisplayFor(modelComment => comment.Comment1)
<hr />
<br/>
</center>
}
}
<center>
@Html.TextAreaFor(model => Model.Comment, new { @class = "height: 200px, width: 600px"})
<br />
<br />
<right>
<input type="submit" value="Comment" class="btn btn-default" />
<input type="hidden" name="PostId" value="@item.Id" />
<input type="hidden" name="ProfileId" value="@Model.ProfileList[0].Id" />
</right>
<br />
</center>
</div>
</div>
}
</center>
</p>
</div>
</div>
因此,对于PostList中的每个项目,都会显示该列表的相关属性。通过这些帖子,还会显示引用此帖子的CommentList中的每个项目,并使用TextBox创建新评论。一切正常!问题似乎在这里:
<center>
@Html.TextAreaFor(model => Model.Comment, new { @class = "height: 200px, width: 600px"})
<br />
<br />
<right>
<input type="submit" value="Comment" class="btn btn-default" />
<input type="hidden" name="PostId" value="@item.Id" />
<input type="hidden" name="ProfileId" value="@Model.ProfileList[0].Id" />
</right>
<br />
</center>
出于某种原因,当我尝试在我的平台上发表评论时,只有在评论Feed上的最新/第一篇文章时才会有效(第一项)。试图对第一项以外的任何内容发表评论,什么都不做。这是我的控制器的Post方法:
public ActionResult Post(string Text, int Id, string Comment, int ProfileId, int PostId)
{
if (Text != "")
{
using (var ctx = new SocialDBEntities())
{
string userId = User.Identity.GetUserId();
Post post = new CrowdSocial2.Post();
post.ProfileId = Id;
post.DATE = System.DateTime.Now.Date;
post.Text = Text;
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Feed");
}
}
else if (Comment != "")
{
string userId = User.Identity.GetUserId();
Comment comment = new CrowdSocial2.Comment();
comment.PostId = PostId;
comment.ProfileId = ProfileId;
comment.Comment1 = Comment;
comment.Date = System.DateTime.Now.Date;
db.Comments.Add(comment);
db.SaveChanges();
return RedirectToAction("Feed");
}
else
{
return RedirectToAction("Feed");
}
}
控制器通过Comment,并确定它是否为&#34; null&#34;。如果没有,它将使用随附的postId和profileId将注释发布到数据库。由于这不起作用,我决定在if(Comment!=&#34;&#34;)语句内部的RedirectToAction上放置一个断点,并在elseif语句中查看发生了什么。
原来,由于某种原因,评论被传递为&#34;&#34;无论评论框中写了什么,控制器都将其视为&#34;&#34;因此只是重定向回到视图。这让我怀疑正在发生的事情是评论正在从第一个评论框传递,这是空的。
我有什么想法可以解决这个问题,以便我可以评论任何帖子项目?