Добавить, просматривать комментарии в ASP.NET MVC3 как в Facebook - PullRequest
1 голос
/ 20 января 2012

Я почти закончил. но есть небольшая проблема в добавлении комментариев.

Я создал базу данных, в которой есть "Галерея" и "Комментарий". Затем я создал модель.

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 голосов
/ 22 января 2012

Я нашел ответ.

просто поместите базу данных Comment в класс Galleryentries, потому что мы работаем с этим классом в представлении.

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

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

    public Comment Comment {get; set;}
}
...