剃刀并没有节省价值

时间:2018-03-16 19:03:38

标签: c# asp.net-mvc razor

我有Razor和MVC的问题。我试图创建一个Q和A.问题存在于数据库中,用户可以填写一个他们可以保存的答案。

我的面试模型是

 public IEnumerable<InterviewQandA> QuestionsAndAnswers { get; set; }
 public string LogoUrl { get; set; }

QuestionsAndAnswers模型是

 public string Question { get; set; }
 public string Answer { get; set; }
 public int Id { get; set; }

控制器返回2个模型中的第一个。

cshtml页面是

@using (Html.BeginForm())
{
    foreach (var qAndA in Model.QuestionsAndAnswers)
    {
        @Html.DisplayFor(a => qAndA.Question)<br />
        @Html.TextBoxFor(a => qAndA.Answer)
        @Html.HiddenFor(a => qAndA.Id)<br /><br />
    }

    <input type="submit" value="Save" />
}

Interview模型查询数据库,并填充带问题的问题(字符串),带有ID(int)的ID,并将Answer硬编码为空字符串(因为数据库中还没有答案)。

问题是,当我输入相关答案的值时,它不会在后期控制器的模型中显示,这是

[HttpPost]
public ActionResult MyInterview(Interview model)
{
   //model shows the questions etc but no value exists in the answer property
   //do stuff  
}

我做错了什么?

修改

使用以下for循环具有相同的问题

for (int i = 0; i < Model.QuestionsAndAnswers.Count(); i++)
{   
    @Html.DisplayFor(a => Model.QuestionsAndAnswers.ElementAt(i).Question)<br />
    @Html.TextBoxFor(a => Model.QuestionsAndAnswers.ElementAt(i).Answer)
    @Html.HiddenFor(a => Model.QuestionsAndAnswers.ElementAt(i).Id)<br /><br />
}

1 个答案:

答案 0 :(得分:2)

试试这个

@Html.Label(Model.QuestionsAndAnswers[i].Answer, Model.QuestionsAndAnswers[i].Question)

要发回信息,您需要更改迭代列表的方式

@for (int i = 0; i < Model.QuestionsAndAnswers.Count; i++) { 
    @Html.Label(Model.QuestionsAndAnswers[i].Answer, Model.QuestionsAndAnswers[i].Question)<br />
    @Html.TextBoxFor(model => Model.QuestionsAndAnswers[i].Answer)
    @Html.HiddenFor(a => .QuestionsAndAnswers[i].Id)<br /><br />
}