我有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 />
}
答案 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 />
}