【发布时间】:2015-10-29 01:30:08
【问题描述】:
我的视图模型在 GET 上运行良好,但在发布后它为空,我不明白为什么。任何帮助将不胜感激。 Quiz-post 在这个阶段没有做太多的事情,我需要在完成方法之前访问发布的模型。 repository.GetAllQuestionsList() 返回 QuizViewModel 列表
视图模型
public class QuizViewModel {
public int Id { get; set; }
public int QuestionId { get; set; }
public string QuestionText { get; set; }
public int QuestionNbr { get; set; }
public int CurrentQuestion { get; set; }
public int TotalNbrOfQuestions { get; set; }
public List<Answer> Answers { get; set; }
}
控制器
public ActionResult Quiz() {
var getAllQuestions = repository.GetAllQuestionsList();
var model = getAllQuestions.Where(c => c.QuestionNbr == 1);
Session["CurrentQ"] = 1;
return View(model);
}
[HttpPost]
public ActionResult Quiz(IEnumerable<Models.QuizViewModel> model) {
int question = Convert.ToInt32(Session["CurrentQ"]);
string str = Request.Params["btnSubmit"];
if (str == "Next Question") {
question++;
Session["CurrentQ"] = question;
}
if (str == "Prev Question") {
question--;
Session["CurrentQ"] = question;
}
return View(model);
}
查看
@model IEnumerable<Quiz.Models.QuizViewModel>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Quiz</title>
</head>
<body>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm()) {
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.QuestionText)
</th>
<th>
@Html.DisplayNameFor(model => model.QuestionNbr)
</th>
<th>
answer
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.QuestionText)
</td>
<td>
@Html.DisplayFor(modelItem => item.QuestionNbr)
</td>
<td>
@foreach (var ML in item.Answers) {
@Html.RadioButtonFor(model => item.Answers, ML.Id)
@Html.Label(ML.AnswerText)
<br/>
}
</td>
</tr>
}
</table>
<input type="submit" id="Submit1" name="btnSubmit" value="Prev Question"/>
<input type="submit" id="Submit2" name="btnSubmit" value="Next Question"/>
}
</body>
</html>
【问题讨论】:
-
您的视图代码没有意义。如果您的模型是
IEnumerable,那么model.QuestionText不应该工作(根本!)
标签: c# asp.net-mvc asp.net-mvc-4