我有一个与它相关的强类型模型的视图
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<SomeNamespace.SomeViewModel>" %>
Run Code Online (Sandbox Code Playgroud)
SomeViewModel看起来像这样
class SomeViewModel
{
public IEnumerable<Foo> Foos {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并说Foo是
class Foo
{
public string Bar {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并在视图中
<% foreach (var item in Model.Foos) { %>
<tr>
<td>
<%= Html.LabelFor(f => f.Bar) %>
</td>
Run Code Online (Sandbox Code Playgroud)
我不确定如何Bar在item使用中显示属性Html.LabelFor()
有人可以帮我弄这个吗?
谢谢,
Dis*_*ile 39
改为:
<% foreach (var item in Model.Foos) { %>
<tr>
<td>
<%= Html.LabelFor(f => item.Bar) %>
</td>
<% } %>
Run Code Online (Sandbox Code Playgroud)
而不是f => f.Bar do f => item.Bar,其中item是foreach循环中变量的名称.
这是更美丽的剃刀语法:)
@foreach( var item in Model.Foos ) {
<tr>
<td>
@Html.LabelFor(f => item.Bar)
</td>
<td>
@Html.DisplayFor(f => item.Bar)
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
你有没有尝试过
<% for (var i=0; i<Model.Foos.Count();i++) { %>
<tr>
<td>
<%= Html.LabelFor(f => f.Foos[i].Bar) %>
</td>
Run Code Online (Sandbox Code Playgroud)
LabelFor 扩展使用 lamda 表达式从模型对象转到选定的属性,请考虑模型的 fa 替换变量。因此,您需要一种从模型到所选属性的方法。您告诉 LabelFor,创建一个名为 f 的局部变量并为其分配模型的值。然后使用 => 后面的位来确定目标属性。
如果您迫切需要使用 foreach,则必须有一种将 item 翻译回原始模型的属性的方法(例如,对于 Gledrius 所说的数组)x=>x.Foos[Model.Foos.IndexOf(foo)])
如果您只想要文本值,则失败
使用 '<%= item %>' 而不是整个标签,或者如果您有 ASP.NET 4 和 MVC2 或更好地使用<%: item %>HTML 编码优点