[英]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.