asp.net – 如何在razor viewengine中实现foreach委托?
发布时间:2020-12-16 09:14:56 所属栏目:asp.Net 来源:网络整理
导读:以下代码适用于webform视图引擎. % Model.Categories.ForEach(x = { % lia href="#"@x.Name/a/li% }) % 我在razor视图中编写了以下代码: @Model.Categories.ForEach(x = { lia href="#"@x.Name/a/li}) 但这不起作用. 任何人都可以建议,有没有办法在剃刀视图
以下代码适用于webform视图引擎.
<% Model.Categories.ForEach(x => { %> <li><a href="#">@x.Name</a></li> <% }) %> 我在razor视图中编写了以下代码: @Model.Categories.ForEach(x => { <li><a href="#">@x.Name</a></li> }) 但这不起作用. 任何人都可以建议,有没有办法在剃刀视图中实现这一点? 提前致谢. 解决方法
你有什么理由要这么做吗?
@foreach(var x in Model.Categories) { <li><a href="#">@x.Name</a></li> } 上面的内容完全相同,更具惯用性. 我看不到使用Razor语法输出.ForEach()委托结果的方法. Razor期望调用方法或调用属性返回一个值,然后将其发送到视图输出中.因为.ForEach()不返回任何内容,所以它不知道如何处理它:
你可以非常简洁地使用迭代器索引: @foreach (var item in Model.Categories.Select((cat,i) => new { Item = cat,Index = i })) { <li><a href="#">@x.Index - @x.Item.Name</a></li> } 如果要将其定义为扩展方法而不是匿名类型,则可以创建一个类来保存Item,Index对,并在IEnumerable< T>上定义扩展方法.这将生成包含在此构造中的原始可枚举项中的项. public static IEnumerable<IndexedItem<T>> WithIndex<T>(this IEnumerable<T> input) { int i = 0; foreach(T item in input) yield return new IndexedItem<T> { Index = i++,Item = item }; } 班级: public class IndexedItem<T> { public int Index { get; set; } public T Item { get; set; } } 用法: @foreach(var x in Model.Categories.WithIndex()) { <li><a href="#">@x.Index - @x.Item.Name</a></li> } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.net mvc 知多少(九)
- asp.net-core – 如何将HostBuilder用于WebJob?
- asp.net-mvc-4 – Css和Js捆绑,IController Exception
- asp.net – Web.HttpContext.Current.User.Identity.Name来
- asp.net-mvc – 使用NHibernate和Autofac管理多个数据库
- asp.net – DropDownList SelectedIndex值未在AutoPostback
- asp.net – 为什么IIS 7.5在重启后重新编译整个网站?
- ASP.NET Excel导出编码问题
- 将变量从ASP.net传递给JavaScript
- asp.net – 自动完成扩展程序 – 滚动条导致结果关闭?
推荐文章
站长推荐
热点阅读