2013-08-10 6 views
0

У меня есть эти две моделей класс:вставить соответствующие данные в MVC4

public class Article 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public ICollection<Comment> Comments { get; set; } 
    } 
    public class Comment 
    { 
     public int ID { get; set; } 
     public int ArticleID { get; set; } 
     public string CommentTxt { get; set; } 
     public Article Article { get; set; } 
    } 
    public class ArticleDbContext : DbContext 
    { 
     public DbSet<Article> Articles { get; set; } 
     public DbSet<Comment> Comments { get; set; } 
    } 

теперь я хочу иметь страницу, все комментарии, вставляемые для статьи перечислены, а также в ниже список я могу добавить комментарий к этой статье?

+1

Что вы пробовали до сих пор? Если вы еще ничего не знаете о контроллерах и представлениях, я рекомендую эту бесплатную серию видео. indepth и хорошо объяснил http://www.asp.net/mvc/videos/pluralsight-building-applications-with-aspnet-mvc-4 – James

+0

Для этого вам нужна ** ViewModel **, см. [здесь] (http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3fundamentals_topic7.aspx) –

ответ

0

Вы можете создать ViewModel для этого:

public class ArticleViewModel 
{ 
    public Article Article { get; set; } 
    public List<Comment> Comments { get; set; } 
} 

В контроллере:

public ActionResult Details(int id) 
{ 
    ArticleViewModel model = new ArticleViewModel(); 

    model.Article = _yourDBRepository.GetArticleById(id); 
    model.Comments = _yourDBRepository.LoadCommentsByArticleId(id); 
    return View(model); 
} 

В связи вы можете добавить новый комментарий пункт так:

@using (Html.BeginForm("Create", "Comment", FormMethod.Post)) 
    { 
     @Html.Hidden("ArticleId", Model.Article.Id) 
     @Html.TextBox("text", "", new { name = "text", id = "text", data_placeholder = "Enter comment" }) 
    } 
0

В контроллере

//** Get Article 
Public ActionResult Article (int ID) 
{ 
Article article = db.Find(ID); 
return(article) 
} 

//*Add comments 
[HttpPost] 
public ActionResult Addcomment (int articleID, string CommentTxt) 
{ 
    Article article = db.Find(ID); 
    Comment comment = new Comment(); 
    db.Comments.Add(comment); 
    comment.ArticleID = articleID; 
    comment.CommentTxt = CommentTxt; 
    db.SaveChanges; 

    return PartialView(article); 
} 


//**Get List of comments after adding new comment 
public ActionResult AllComments(int articleID) 
{ 
    Article article = db.Find(ID); 
    var comments = db.Comments.Where(a=>a.ArticleID == articleID).ToList(); 
    return PartialView(comments); 
} 

В своей статье Вид:

<sript> 
$('.addComment')click(function(){ 
$post('/Home/[email protected]&CommentTxt='+$('.commenttext').val()).always(function() 
{ 
$('.comments).Load(/Home/AllComments/[email protected]) 
}); 
}) 
</script> 

//*Your article here 
...... 

//*Comments section 
<div class="comments">@Html.RenderAction("AllComments", "Home")</div> 

<input type="text" class="commenttext" /> 
<button class="addComment">Add comment</button> 

В ваших AllComments Просмотр

<ul> 
@foreach(var i in Model) 
<li> 
@i.CommentTxt 
</li> 
</ul> 
Смежные вопросы