2013-10-05 4 views
0

я пытался что-то вроде этого@Html Displayfor бросает исключение

@Html.DisplayFor(modelItem => (item.Name + "@" + item.Department)) 

я получаю «InvalidOperationException» (Шаблоны могут быть использованы только с доступом поля, доступ к собственности, одномерный индекс массива или одного параметра пользовательских индексатор выражения.)

Оба члены являются строками, я думал, что это должно работать ...

Благодаря

+0

возможно дубликат [Шаблоны могут быть использованы только с выходом на местах, доступ к свойствам , одномерный индекс массива или однопараметрические выражения пользовательского индексатора] (http://stackoverflow.com/questions/9925728/templates-can-be-used-only-with-field-access-property-access-single- размер) –

+0

см. http://stackoverflow.com/questions/4892248/get-a-template-error-when-i-try-to-do-this –

ответ

1

Ошибка в том, что DisplayFor принимает Expression который Expression<Func<TModel,TReturn>> и не делегат Func<TModel, TReturn>. Поэтому вы не можете смешивать его со случайным кодом C#, поскольку он не является делегатом.

Чтобы получить то, что вы хотите, вы можете использовать это (нечетный синтаксис я знаю - потому что вы должны бежать @ в):

@Html.DisplayFor(item => item.Name)@:@@@Html.DisplayFor(item => item.Department) 
+0

Спасибо за объяснение, но извините, я получил ошибку синтаксического анализа ... –

+0

Какая ошибка у вас? – YK1

+0

Это может быть просто проблема с именем переменной. Обновленный ответ. – YK1

1
+1

ли эти ссылки решают проблему? Если бы вы могли добавить, почему, по вашему мнению, они решают проблему с вашим ответом.? –

Смежные вопросы