不确定怎么说这个......
我有一个模型,这是它的一部分:
public class AnswerSheet
{
public string Q1 { get; set; }
public string Q2 { get; set; }
public string Q3 { get; set; }
public string Q4 { get; set; }
我正在使用Viewmodel重复使用相同的视图来分别回答每个问题。它几乎可以工作。有没有办法可以使用我的控制器如下动态分配model.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)
作为旁注,我愿意就如何说出这个问题或分配给它的标签提出建议。
答案 0 :(得分:0)
我觉得这篇文章很有用:
Set object property using reflection
这就是我最终要做的,仍然需要测试性能:
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();
也许这会帮助某些人下线....不确定这是否算作反射......