Как динамически вызывать свойство модели с помощью переменной в asp.net MVC C# в razorC#

Место общения программистов C#
Anonymous
Как динамически вызывать свойство модели с помощью переменной в asp.net MVC C# в razor

Сообщение Anonymous »

Текущий сценарий:
  • У меня есть класс модели, который имеет описания на разных языках, например Description_en, Description_sp, Description_fr.
  • Когда пользователь выбирает текущий язык, у меня есть «культура» cookie с этим значением.
***** Цель состоит в том, чтобы вызвать другой Описание, если выбран другой язык. Если пользователь выбирает fr, должно быть вызвано описание_fr и так далее...
Мой код:
В ModelClass у меня есть отражение (видел здесь: Как вызвать свойство объекта с переменной в C#, например, customer.&fieldName):

Код: Выделить всё

public class Something
{
public string Description_en { get; set; }
public string Description_sp { get; set; }
public string Description_fr { get; set; }

//Reflection, makes it possible to select a property to call with a variable
public string GetPropertyValue(string fieldName)
{
PropertyInfo prop = typeof(Something).GetProperty(fieldName);
return prop.GetValue(this, null).ToString();
}
}
В шаблоне бритвы у меня есть:

Код: Выделить всё

@model IEnumerable





@Html.DisplayNameFor(model => model.GetPropertyValue("Description_" + @culture))



При обращении к свойству GetPropertyValue("...") отображается следующая ошибка:

Шаблоны можно использовать только с доступом к полям, доступом к свойствам, индексом одномерного массива или выражениями пользовательского индексатора с одним параметром.

Мой вопрос: есть ли способ сделать это?
P.S. Очевидная (и правильная) возможность...

Код: Выделить всё

if(@culture == "en"){@Html.DisplayNameFor(model => model.Description_en") }
... Не должно быть ответа, потому что это создаст «ад» кода для последующего обслуживания.
Спасибо за возможную помощь

Вернуться в «C#»