添加,查看ASP.NET MVC3中的注释,就像在Facebook中一样

时间:2012-01-20 09:55:34

标签: asp.net-mvc-3 facebook-comments

我差不多完成了。但添加评论时有一点问题。

我创建了一个拥有“Gallery”和“Commment”的数据库。然后我也创建了一个模型。

public class GalleryEntries
{
    public IList<GalleryEntry> Entries { get; set; }

    public GalleryEntries()
    {
        Entries = new List<GalleryEntry>();
    }
}

public class GalleryEntry
{
    public Gallery GalleryImage { get; set; }
    public List<Comment> Comments { get; set; }
    public Comment Comment { get; set; }
}

然后我的控制器看起来像这样。

GalleryDataContext GalleryDB = new GalleryDataContext();

    GalleryEntries galleryentries = new GalleryEntries();

    public ActionResult Index()
    {    

        foreach (Gallery gallery in GalleryDB.Galleries)
        {
            GalleryEntry galleryentry = new GalleryEntry();
            galleryentry.Comments = GalleryDB.Comments.Where(c => c.BildID == gallery.ImageID).ToList();
            galleryentry.GalleryImage = gallery;
            galleryentries.Entries.Add(galleryentry);
        }

        return View(galleryentries);
    }

    [HttpPost]
    public ActionResult Index(Comment comment)
    {
        Comment newComment = new Comment();

        newComment.BildID = comment.BildID;
        newComment.Comment1 = comment.Comment1;

        GalleryDB.Comments.InsertOnSubmit(newComment);
        GalleryDB.SubmitChanges();

        return RedirectToAction("Index");
    }    

最后,视图..

@model KK_Online.Models.GalleryEntries

@foreach (var item in Model.Entries){

// here comes the picture and the written comments below.. it works perfectly..

//then down here I tried to create textarea..

@using (Html.BeginForm())
       {
            @Html.ValidationSummary(true)

        <div class="add_comment"> 
                <fieldset>
                    <legend> Add Comment </legend>

                    @Html.EditorFor(model => item.Comment.BildID)
                    @Html.ValidationMessageFor(model => item.Comment.BildID)
                    <br />

                    @Html.TextAreaFor(model => item.Comment.Comment1)
                    @Html.ValidationMessageFor(model => item.Comment.Comment1)

                   <br />

                    <button type="submit">Add Comment </button>

                </fieldset>

          </div>

       }
}

现在,当我输入相应的PictureID并写下我的评论并提交时,会显示 那个“

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Comment_Gallery". The conflict occurred in database "PhotoComment", table "dbo.Gallery", column 'ImageID'.
The statement has been terminated.

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案。

只需将Comment数据库放在Galleryentries类中,因为我们在视图中处理此类。

public class GalleryEntries
{
    public IList<GalleryEntry> Entries { get; set; }

    public GalleryEntries()
    {
        Entries = new List<GalleryEntry>();
    }

    public Comment Comment {get; set;}
}