Html Helper для IEnumerable <T>коллекция - PullRequest
2 голосов
/ 17 мая 2011


У меня есть два класса MyClassA и MyClassB:

public class MyClassA
{
    public int Age { get; set; }
    public string Name { get; set; }
}

public class MyClassB
{
    public IEnumerable<MyClassA> Data { get; set; }
}

Теперь я хочу создать пользовательский строго типизированный помощник html для генерации текстовых полей с именами из коллекции MyClassAкак это:

@model MyClassB

@Html.MyTextBoxFor(p => p.MapFrom(o => o.Age))
@Html.MyTextBoxFor(p => p.MapFrom(o => o.Name))

... с выводом:

<input type="text" name="Age" />
<input type="text" name="Name" />

Как мне это сделать?


PS.Я знаю, я могу написать что-то вроде этого:

@Html.TextBoxFor(p => p.Data.First().Name)

но это так неправильно и не элегантно ...
Есть идеи?

1 Ответ

3 голосов
/ 17 мая 2011

Позвольте мне убедиться, что я правильно понимаю это ... вы хотите создать текстовое поле для Name и Age для каждого MyClassA в Data свойстве MyClassB.Если это так, то редактор шаблонов на помощь.

Создать /Views/Shared/EditorTemplates/MyClassA.cshtml

@model MyClassA

@Html.TextBoxFor(m => m.Name)
@Html.TextBoxFor(m => m.Age)

, тогда на ваш взгляд:

@model MyClassB

@Html.EditorFor(m => m.Data)
...