gpt4 book ai didi

c# - 使用 mvc4 View 处理嵌套集合到 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:51 26 4
gpt4 key购买 nike

为了一个我认为应该很简单的概念,我已经苦苦思索了几个小时。我有一个模型,它本质上是一个包含问题集合的测验,并且该集合包含答案集合。这是我的模型的示例(已简化):

public class QuizModel
{
public List<Question> Questions { get; set; }
}

public class Question
{
public string TheQuestion { get; set; }
public List<Answer> Answers { get; set; }
}

public class Answer
{
public string Value { get; set; }
}

还有麻烦的部分,我的观点是:

@using (Html.BeginForm("SubmitQuiz", "Quiz", FormMethod.Post, new { role = "form" }))
{
<ol>
@{
@Html.Hidden("Id", Model.Id, new { Id="pQuizModel"})
for (int vQIndex = 0; vQIndex < Model.Questions.Count; vQIndex++)
{
<li>
@Model.Questions.ElementAt(vQIndex).Question
<ul class="list-unstyled">
@{
for (int vAIndex = 0; vAIndex < Model.Questions.ElementAt(vQIndex).Answers.Count; vAIndex++)
{
<li>@Html.RadioButtonFor(pModel => pModel.Questions.ElementAt(vQIndex).SelectedAnswer, Model.Questions.ElementAt(vQIndex).Answers.ElementAt(vAIndex).Value) @Model.Questions.ElementAt(vQIndex).Answers.ElementAt(vAIndex).Value</li>
//<li>@Html.RadioButton(Model.Questions.ElementAt(vQIndex).Id.ToString() + ":" + Model.Questions.ElementAt(vQIndex).Answers.ElementAt(vAIndex).Id, Model.Questions.ElementAt(vQIndex).Answers.ElementAt(vAIndex).Id)
// @Model.Questions.ElementAt(vQIndex).Answers.ElementAt(vAIndex).Value</li>
}
}
</ul>
</li>
}
}
</ol>
<button type="submit" class="btn btn-default">Submit</button>
}

我的 Controller ,只是尝试调试它并确保正确填写模型:

public ActionResult SubmitQuiz(QuizModel pQuizModel)
{

return View();
}

根据我的观点,我确实尝试了很多不同的建议。直接绑定(bind)到模型中的单个值非常容易,我什至可以让我的 pQuizModel 具有您在 View 中看到的正确隐藏部分。但是模型中没有其他内容被填充,我不明白为什么。\

编辑:为了澄清我的问题, View 很好,但 Controller 没有收到 pQuizModel 参数中的任何值。我没有正确的绑定(bind)设置,需要一些帮助。

最佳答案

问题不在于初始页面的 Razor 呈现,而在于生成的 POST 上的模型 Binder (在他们按下按钮之后)。模型绑定(bind)器对如何将 id 映射到嵌套项做出某些假设。因为您在形成 Razor 代码时没有遵循约定,所以它没有填充方法的输入属性。参见 http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx对于类似的例子。

关于c# - 使用 mvc4 View 处理嵌套集合到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25892558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com