在ASP.NET MVC中动态设置模型属性

时间:2016-12-13 18:47:24

标签: c# 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);
        }

所以,基本上,我想知道我如何能够“执行”“结果”字符串作为真实代码。提前感谢您的任何建议!

1 个答案:

答案 0 :(得分:2)

你可以使用反射

类似

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

获取值

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

设置值