Где пункт в .NET MVC - PullRequest
1 голос
/ 05 марта 2012

У меня есть следующий код, который выбирает кучу комментариев из базы данных, но у меня есть только один текущий пост, и я хотел бы иметь дело только с комментариями относительно текущего поста.

public ActionResult Index()
{
    ViewBag.PostCommentFK = new SelectList(db.Posts, "PostID", "PostTitle");
    return View();
}

IПолагаю, все, что мне нужно, это добавить предложение where к выражению «PostCurrent» является логическим значением, и может быть только один «True» PostCurrent.

В настоящее время, на мой взгляд, у меня есть скрытое поле со значениемиз 1, поэтому комментарии добавляются только к записи 1, но хотелось бы, чтобы это было текущее сообщение.

@Html.HiddenFor(model => model.PostCommentFK, new { Value = 1 })

У меня есть метод [HttpPost] для SaveChanges,

 [HttpPost]
 public ActionResult Index(Comment comment)
 {
     if (ModelState.IsValid)
     {
         db.Comments.AddObject(comment);
         db.SaveChanges();
         return RedirectToAction("CommentResponse");  
     }

    ViewBag.PostCommentFK = new SelectList(db.Posts, "PostID", "PostTitle", comment.PostCommentFK);
    return View(comment);
}

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Спасибо, аминь,

Вы были близки, и это указало мне в правильном направлении.Проблема, с которой я столкнулся, заключалась в том, что я использовал модальный комментарий, но мне нужно было пост-модальное.Представление публикует комментарии, но является лишь формой, и ему нужно только знать о PostID CurrentPost.

Поэтому я изменил свое действие Index на

public ActionResult Index()
{            
    Post post = db.Posts.Single(p => p.PostCurrent == true);
    return View(post);
}

И дал моему представлению сообщениеМодальный

@model TMPBlog.Models.Post

Затем я мог бы получить доступ к PostID следующим образом:

@Html.Hidden("PostCommentFK", @Html.DisplayFor(model => model.PostID))

Приветствия,

Майк.

1 голос
/ 05 марта 2012

Я думаю, вам нужно скрыть PostID вместо value

@Html.HiddenFor(model => model.PostCommentFK.PostID)

Тогда:

 [HttpPost]
 public ActionResult Index(Comment comment)
 {
     if (ModelState.IsValid)
     {
         if(comment.PostID == 0)//New record
            db.Comments.AddObject(comment);
         else // Edit existing comment
            {
              var OldComment = db.Comments.Where(c => c.PostID == comment.PostID).SingleOrDefault();
              if (OldComment != null)
                {
                  OldComment.PostTitle = comment.PostTitle;
                  //Set all other properties...
                }
            }
         db.SaveChanges();
         return RedirectToAction("CommentResponse");  
     }

    ViewBag.PostCommentFK = new SelectList(db.Posts, "PostID", "PostTitle", comment.PostCommentFK);
return View(comment);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...