2015-07-13 2 views
0

В имеет вид набранный из:ASP.NET - получить DisplayNameFor модели вне поля зрения

@model modelLib.Client 

Но дальше кода, который я хочу DisplayNameFor о собственности для другой модели, точно modelLib.Licence модели.

Обычно для модели типизированных я хотел бы сделать:

@Html.DisplayNameFor(model => model.prop) // Client 

Есть идеи?

+0

Вы должны использовать Reflection для получения данных атрибутов. Можете ли вы сказать, какой атрибут вы используете? 'DisplayName' или' Display' нарушают ваше свойство модели? –

+0

Есть ли какое-либо отношение между «Клиентом» и «Лицензией»? То есть, где-то в иерархии свойств объекта «Клиент» есть объект «Лицензия»? Если это так, вы можете перейти к следующему: '@ Html.DisplayNameFor (model => model.SomeLicense.SomeProperty)' – David

+0

@teovankot 'modelLib.Licence' имеет 2 свойства' Name' и 'End', каждая из которых имеет' [Display (Name = "Something")] ' – Mehdiway

ответ

2

(В ответ на замечания выше ...)

Просто используйте свойство на вложенной модели. Для одного экземпляра, это будет что-то вроде этого:

@Html.DisplayNameFor(model => model.SomeLicense.SomeProperty) 

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

@Html.DisplayNameFor(model => model.SomeLicenses.First().SomeProperty) 

может появиться, что вызов First() может потерпеть неудачу в том случае, если есть нулевые элементы, но никогда на самом деле не вызывает First() в этом случае. Сама эта ссылка используется только каркасом для того, что я мог бы назвать «некоторым обманом отражения», чтобы получить информацию о типе, чтобы он мог ссылаться на атрибуты этого свойства.

+0

Это работает, спасибо;) – Mehdiway