我有一个与它关联的强类型模型的 View
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<SomeNamespace.SomeViewModel>" %>
SomeViewModel看起来像这样
class SomeViewModel
{
public IEnumerable<Foo> Foos {get; set;}
}
说福是
class Foo
{
public string Bar {get; set;}
}
并认为
<% foreach (var item in Model.Foos) { %>
<tr>
<td>
<%= Html.LabelFor(f => f.Bar) %>
</td>
我不确定如何使用
Bar
在item
中显示Html.LabelFor()
属性有人可以帮我弄这个吗?
谢谢,
最佳答案
你有没有尝试过
<% for (var i=0; i<Model.Foos.Count();i++) { %>
<tr>
<td>
<%= Html.LabelFor(f => f.Foos[i].Bar) %>
</td>
LabelFor扩展使用lamda表达式从Model对象转到所选属性,请考虑将f替换为模型变量。因此,您需要一种从模型到所选属性的方法。您要告诉LabelFor,创建一个名为f的局部变量,然后为其分配模型值。然后使用=>之后的位确定目标属性。
如果您迫切需要使用foreach,则必须有一种方法可以将项目转换回原始模型的属性(例如,对于Gledrius说的数组
x=>x.Foos[Model.Foos.IndexOf(foo)])
如果您只想要文本值,则失败
使用''代替整个标签,或者如果您具有ASP.NET 4和MVC2或更好地使用
<%: item %>
来表示HTML编码的优点关于c# - 在foreach中的LabelFor(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7445432/