asp.net-mvc – 如何在ASP.NET MVC视图中对HTML列表项进行分组?
发布时间:2020-12-16 00:18:15 所属栏目:asp.Net 来源:网络整理
导读:我在视图中有这个代码 ul @foreach (var tag in Model) { lia href="/Post/Tag/@tag.Id"@tag.Name/a/li }/ul 现在我需要按照第一个字符对List Items进行分组 A -Apple -AntC -CarS -Sky -Sea -Sun 我怎样才能做到这一点? 解决方法 How can I achieve this?
|
我在视图中有这个代码
<ul>
@foreach (var tag in Model)
{
<li><a href="/Post/Tag/@tag.Id">@tag.Name</a></li>
}
</ul>
现在我需要按照第一个字符对List Items进行分组 A -Apple -Ant C -Car S -Sky -Sea -Sun 我怎样才能做到这一点? 解决方法
好简单.答案,如asp.net-mvc标签中99.99%的问题总是相同的:使用视图模型. 我假设您有以下域模型: public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
}
因此,您始终要定义一个视图模型,该模型将满足您要在此视图中实现的要求(通过其Name属性的第一个字母对Tag域模型列表进行分组并显示链接): public class TagViewModel
{
public string Letter { get; set; }
public IEnumerable<Tag> Tags { get; set; }
}
那么你显然会有一个控制器,它的职责是查询你的DAL层,以便获取域模型,构建一个视图模型,最后将这个视图模型传递给视图: public class HomeController : Controller
{
public ActionResult Index()
{
// Get the domain model
var tags = new[]
{
// Guess this comes from a database or something
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" },};
// now build the view model:
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>
<!-- Please notice the usage of an HTML helper to generate
the anchor instead of the hardcoded url shown in your
question which is very bad
-->
@Html.ActionLink(
tag.Name,"Post","Tag",new { id = tag.Id },null
)
</li>
}
</ul>
}
这显然会产生预期的结果: 所以下次你遇到ASP.NET MVC中的一些困难或问题时告诉自己:我必须使用视图模型.看,问题解决了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – 在TrasactionScope中使用WebSercurity.Cr
- asp.net-mvc – Knockout,CKEditor&Single Page App
- asp.net-web-api – asp web api DateTime模型绑定
- 禁用ASP.net文本框而不实际禁用它?
- dependency-injection – Ninject:构造函数参数
- asp.net-mvc – 隐藏字段的完整性:Asp.NET mvc
- asp.net-mvc – 如何在ASP .NET MVC中对参数进行URL编码
- asp.net-mvc – Asp.net MVC授权属性,重定向到自定义“无权
- ASP.Net会话超时检测:Session.IsNewSession和SessionCooki
- asp.net-mvc – ASP.NET MVC单元测试控制器与HttpContext
推荐文章
站长推荐
- Asp.net MVC scheduler实现
- asp.net-mvc – 即使我设置CustomError =“On”,
- asp.net-mvc – ASP.NET MVC Ajax Form OnFailur
- ASP.Net MVC的ViewBag一个坑,不要跳进去
- asp.net-mvc – 实体框架种子与身份(Microsoft.O
- asp.net-mvc-4 – 如何从asp.net mvc 4中的空Web
- asp.net-mvc-3 – 为mvc创建一个html帮助器
- asp.net-mvc-3 – Mvc 3图像上传库
- 一步一步学asp.net Ajax登录设计实现解析
- asp.net – 将TemplateField的可见性绑定到Bound
热点阅读
