Лямбда выражение: не получается составить во вьюхе
@model List<Dog>
Где-то во вьюхе мне надо сделать текстовый инпут для объекта Dog (или для любого другого объекта, не связанного с Dog вообще, кароче тип не важен).
Соотвественно пишу:
@Html.TextBoxFor((Dog d) => d.Nickname)
Ну, и получаю по всем статьям от компилятора за эти вольности:
Error: The type arguments for method 'System.Web.Mvc.Html.InputExtensions.TextBoxFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
Бьюсь уже второй день, пытаясь понять, как завернуть эту лямбду правильно...
http://stackoverflow.com/questions/8894442/mvc-razor-view-nested-foreachs-model
Но ведь не так всё просто.
В ответе предполагается, что есть циклы, в которых раскрываются свойства переданной из контроллера Модели.
Как работает binder я себе представляю тоже и вообще это несколько другая тема, чем та, о которой я спрашиваю.
Переиначу вопрос. :) Вот есть у нас strongly typed view какой-нибудь. Мы в него засовываем заранее известную модель. Ну, и слава Всевышнему, пусть она там как угодно себе крутиться и парситься и сеттиться. Нам плевать на саму эту Модель. Нам нужно...
...составить лямбду для другого типа в этой же strongly typed вьюхе. Компилятор вопрошает нас о том, какой тип нужно в итоге вывести. А мы ему и говорим "вот такой тип". И, в конечном счёте, всё сводится к тому, как именно сказать компилятору, что надо вывести.
Когда я искал ответ на этот вопрос в первый раз, то довольно быстро обнаружил то, что мне надо. Но уже забыл решение, а прошло-то пару дней :) Со второй попытки вспомнить сложнее :)