How can i achieve this?
Very easy. The answer, as in 99.99% of the questions in the asp.net-mvc tag , is always the same: use view models .
I assume that you have the following domain model:
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
}
, , , , ( Tag Name ):
public class TagViewModel
{
public string Letter { get; set; }
public IEnumerable<Tag> Tags { get; set; }
}
, , , , DAL, , , , :
public class HomeController : Controller
{
public ActionResult Index()
{
var tags = new[]
{
new Tag { Id = 1, Name = "Apple" },
new Tag { Id = 2, Name = "Ant" },
new Tag { Id = 3, Name = "Car" },
new Tag { Id = 4, Name = "Sky" },
new Tag { Id = 5, Name = "Sea" },
new Tag { Id = 6, Name = "Sun" },
};
var model = tags.GroupBy(t => t.Name.Substring(0, 1)).Select(g => new TagViewModel
{
Letter = g.Key,
Tags = g
});
return View(model);
}
}
, , :
@model IEnumerable<TagViewModel>
@foreach (var item in Model)
{
<h2>@item.Letter</h2>
<ul>
@foreach (var tag in item.Tags)
{
<li>
@Html.ActionLink(
tag.Name,
"Post",
"Tag",
new { id = tag.Id },
null
)
</li>
}
</ul>
}
, , :

, , ASP.NET MVC, : . ., .