2016-12-13 6 views
1

У меня есть длинный список флажков, которые нужно отображать на форме. Я получаю список флажков из таблицы в базе данных и отображаю их на странице. Когда страница сохраняется, я сохраняю имя и значение поля (как они хранятся в базе данных) каждого выбранного элемента.Динамический набор свойств модели в ASP.NET MVC

У меня также есть класс модели, в котором все эти поля флажков отображаются, но я думал, так как у меня есть имя и значение поля, я бы мог установить только те свойства, для которых у меня есть поле/стоимость.

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

private void CreatePPAIndication(ReferralFormViewModel viewModel, Guid personId, Guid encId) 
     { 
      var ppaIndication = new PPAIndication(); 

      ppaIndication.enterprise_id = "00001"; 
      ppaIndication.practice_id = "0001"; 
      ppaIndication.person_id = personId; 
      ppaIndication.enc_id = encId; 
      // set more properties... 

      // Here is where I would set a property for each selected check box. 
      foreach (var indication in viewModel.Indications.Where(o => o.IsSelected)) 
      { 
       var result = "ppaIndication." + indication.FieldName + "(" + indication.FieldValue + ")"; 
      } 

      // How can I essentially "execute" the string in the line above? 

      _context.PPAIndications.Add(ppaIndication); 
     } 

Так, в принципе, мне интересно, как я по существу может «выполнить» в «результат» строка как реальный код. Заранее благодарю за любой совет!

ответ

2

вы можете использовать отражение для этого

что-то вроде

GetType().GetProperty(o.FieldName).GetValue(indication, null); 

, чтобы получить значение

или

GetType().GetProperty(o.FieldName).SetValue(indication, o.Value); 

, чтобы установить значение

+0

легко, как это? Это похоже на то, что мне нужно. Спасибо, Стив! –

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