我有一个与它关联的强类型模型的 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>

我不确定如何使用Baritem中显示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/

10-12 05:24