Today, I'm share the article build a Multiple Comment. I using RenderAction in ASP.NET MVC 5
Example Description:
foreach(var item in Comment){
//content parent
<label>@item.content</label>
//foreach content child
forach(var item2 in Comment){
<label>@item.content</label>
}
}
First, We need create project ASP.NET MVC 5, you can see the article again
After then, create Comment.ts file in Models folder. The following code below
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MVC5_ViewCompoment.Models
{
public class Comment
{
public int id { get; set; }
public string content { get; set; }
public int parent { get; set; }
}
}
Okay, Comment.cs file data configuration , continue you create HomeController.cs in Controllers directory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC5_ViewCompoment.Models;
namespace MVC5_ViewCompoment.Controllers
{
public class HomeController : Controller
{
// GET: Home
List<Comment> _cmt = new List<Comment>();
public HomeController()
{
_cmt.Add(new Comment() { id = 1, content = "Cmt A", parent = 0 });
_cmt.Add(new Comment() { id = 2, content = "reply Cmt A", parent = 1 });
_cmt.Add(new Comment() { id = 3, content = "reply Cmt A", parent = 2 });
_cmt.Add(new Comment() { id = 4, content = "Cmt B", parent = 0 });
_cmt.Add(new Comment() { id = 5, content = "reply Cmt B", parent = 4 });
}
public ActionResult Index()
{
ViewBag.data = _cmt;
return View();
}
[ChildActionOnly]
public ActionResult _ChildComment(int id)
{
var data = _cmt.Where(s => s.parent == id).ToList();
return PartialView("_ChildComment", data);
}
}
}
- You need using path to Models folder, after then you can call Comment.cs
- Create
List<Comment> _cmt = new List<Comment>()
, add data to List
Continue, We open Index.cshtml file in Views/Home modify it the following code below
@model List<MVC5_ViewCompoment.Models.Comment>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach (var item in ViewBag.data)
{
if (item.parent == 0)
{
<div class="comment_parent" style="width:100%;background:#808080">
<label>@item.content</label>
@{Html.RenderAction("_ChildComment", "Home", new { id = item.id });}
</div>
}
}
In Index.cshtml file, you seen it call RenderAction to _ChildComment, So you need create _ChildComment.cshtml file in Views/Shared folder
@model IEnumerable<MVC5_ViewCompoment.Models.Comment>
@foreach (var item in Model)
{
<div class="comment_child" style="width:100%;padding-left:50px;background:#d5d5d5;">
<label>@item.content</label>
@{Html.RenderAction("_ChildComment", "Home", new { id = item.id });}
</div>
}
_ChildComment.cshtml retrieve data from Controller
Demo:
The Article : ASP.NET MVC 5 Multiple Comment
Top comments (0)