繁体   English   中英

动态模型属性,按名称获取模型属性

[英]Dynamic Model Properties, get model property by name

不确定如何措辞...

我有一个模型,这是它的一部分:

public class AnswerSheet
    {

public string Q1 { get; set; }
public string Q2 { get; set; }
public string Q3 { get; set; }
public string Q4 { get; set; }

我正在使用Viewmodel重用相同的视图来分别回答每个问题。 快要工作了。 有什么方法可以如下使用控制器动态分配模型。q#,例如:

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult CreateNextQ([Bind(Include = "ID, qCounter, Question,Comment")] AnswerSheetCreateVM answerVM)
        {
            if (ModelState.IsValid)
            {
                string questionAns = answerVM.Question + answerVM.Comment;
                AnswerSheet answer= db.AnswerSheets.Find(answerVM.ID);


//THIS PART HERE IS WHERE I HAVE A PROBLEM
                answer.Q(answerVM.qCounter) = questionAns;
//That one line above
                db.AnswerSheets.Add(answer);
                db.SaveChanges();

所以基本上我可以从控制器变量(在这种情况下为qCounter)中获取数据,并将其分配给Model.Q(qcounter)之类的模型

作为附带说明,我愿意就如何措辞该问题或为该问题分配什么标签提出建议。

我发现这篇文章很有用:

使用反射设置对象属性

这是我最终要做的,仍然必须测试性能:

string test = string.Format("Q" + answerVM.qCounter);                    
                string questionAns = (answerVM.Question + " - " + answerVM.NoComment);

                AnswerSheet answer= db.AnswerSheets.Find(answerVM.ID);
                if (answer== null)
                {
                    return HttpNotFound();
                }                
                answer.GetType().GetProperty(test).SetValue(answer, questionAns, null);
db.Entry(answer).State = EntityState.Modified;
                db.SaveChanges();

也许这将帮助某人。...不确定这是否算作使用反射...。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM