Боюсь, это невозможно из-за природы атрибутов в C #.Атрибуты представляют метаданные, которые вставляются в результирующую сборку во время компиляции, что означает, что они могут принимать только выражения, известные во время компиляции.
Один из возможных обходных путей, который я бы порекомендовал вам, - это использование моделей представлений.Так, например, у вас будет следующая модель представления, в которую будут включены только те свойства, которые действительно должны быть связаны:
public class UpdateElephantViewModel
{
public int Size { get; set; }
public string Color { get; set; }
public int Age { get; set; }
public int SizeOfTeeth { get; set; }
public int TrunkLength { get; set; }
public string Personality { get; set; }
}
, которая также может выглядеть следующим образом, если модель базового вида будет использоваться повторно:
public class UpdateAnimalViewModel
{
public int Size { get; set; }
public string Color { get; set; }
public int Age { get; set; }
public int SizeOfTeeth { get; set; }
}
public class UpdateElephantViewModel : UpdateAnimalViewModel
{
public int TrunkLength { get; set; }
public string Personality { get; set; }
}
и тогда вы можете выполнить следующее действие контроллера:
[HttpPost]
public ActionResult Update(UpdateElephantViewModel model)
{
...
}
и, наконец, отобразить между моделью представления и фактической моделью Слона.Чтобы облегчить сопоставление между этими двумя типами, вы можете использовать AutoMapper .