评论框仅发布在MVC中的第一篇帖子

时间:2017-04-25 15:32:11

标签: c# html asp.net-mvc asp.net-mvc-4

我的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)&nbsp;
                        @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;因此只是重定向回到视图。这让我怀疑正在发生的事情是评论正在从第一个评论框传递,这是空的。

我有什么想法可以解决这个问题,以便我可以评论任何帖子项目?

0 个答案:

没有答案