代码之家  ›  专栏  ›  技术社区  ›  Dmytrii Nagirniak

在ASP.NET MVC2中绑定ISET

  •  0
  • Dmytrii Nagirniak  · 技术社区  · 14 年前

    我正试图找出绑定 ISet ( Iesi.Collection )作为第一个元素。

    所以基本上我只需要使用一种带有索引器的集合(和 伊塞特 不可以)然后我可以写这样的代码(非常好地工作):

    <%: Html.EditorFor(x => x.Company.PrimaryUsers[0].Email) %>
    

    但由于ISET没有索引器,我不能使用它。

    那么,如何在MVC2中绑定ISET的第一个元素呢?

    谢谢,
    德米特里。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Darin Dimitrov    14 年前

    不幸的是,这些强类型的帮助器只与集合的索引器属性一起工作。他们实际上会寻找打开和关闭 [ ] 语法中的括号。

    可能的解决方法是在视图模型类中添加另一个类型为的属性 IList 将由原始财产填充。在getter中,您只需从原始属性返回一个新的列表,在setter中,您将重建原始集,因为它不具有顺序的概念。

        2
  •  0
  •   Levi    14 年前

    您可以通过以下方式完成此操作:

    <%
      int i = 0;
      foreach (var element in Model.Company.PrimaryUsers) {
        string htmlFieldName = String.Format("Company.PrimaryUsers[{0}]", i);
        %><%: Html.EditorFor(_ => element, null /* templateName */, htmlFieldName) %><%
        i++;
      }
    %>
    

    editorfor()的这种特殊重载表示“我将向您传递一个模型,但对模型使用htmlfieldname字符串,而不是从表达式中推断它。”您必须跟踪 在这种情况下,手动操作。