Привязать ISet в ASP.NET MVC2 - PullRequest
0 голосов
/ 03 мая 2010

Я пытаюсь выяснить, как лучше всего связать первый элемент ISet (Iesi.Collection) как первый элемент.

Так что в основном мне нужно использовать только какую-то коллекцию, у которой есть индексатор (а ISet нет), тогда я могу написать такой код (который прекрасно работает):

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

Но поскольку в ISet нет индексатора, я не могу его использовать.

Так как же тогда связать первый элемент ISet в MVC2?

Спасибо
Дмитрий.

Ответы [ 2 ]

1 голос
/ 03 мая 2010

К сожалению, эти строго типизированные помощники работают только со свойствами индексатора для коллекций. На самом деле они будут искать открывающие и закрывающие скобки [ ] в синтаксисе.

Возможный обходной путь - добавить еще одно свойство в классе модели представления, которое будет иметь тип IList и будет заполнено из исходного свойства. В получателе вы просто вернете новый список из исходного свойства, а в установщике восстановите исходный набор, так как он не имеет понятия порядка.

0 голосов
/ 03 мая 2010

Вы можете выполнить это с помощью следующего:

<%
  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, а не пытайтесь вывести ее из выражения». В этом случае вы должны отслеживать i вручную.

...