我是 MVC 的新手,在项目中使用 MVC4。
这是一段代码 -
@model SomeModel
@{
for (var i = 0; i < Model.NumberOfQuestions; i++)
{
<div class="ques">
<div class="leftCol">
<label>@Resources.Enroll.Question</label>
</div>
<div class="rightCol">
@Html.DropDownListFor(m => m.Question, Model.Questions, new { id = "ddlQuestion" + i, @data_native_menu = "false", onchange = "SelectedIndexChanged(id)" })
@Html.ValidationMessageFor(m => m.Question)
</div>
<div class="clear" />
<div id="@("customQuestion" + i)" class="hide">
<div class="leftCol">
<label>@Resources.Enroll.CustomQuestion</label>
</div>
<div class="rightCol">
@Html.TextBoxFor(m => m.CustomQuestion, new { id = "txtCustomQues" + i })
@Html.ValidationMessageFor(m => m.CustomQuestion)
</div>
</div>
<div class="clear" />
<div class="leftCol">
<label>@Resources.Enroll.Answer</label>
</div>
<div class="rightCol">
@Html.TextBoxFor(m => m.Answer, new { id = "txtAnswer" + i })
@Html.ValidationMessageFor(m => m.Answer)
</div>
<div class="clear" />
</div>
}
}
这里的问题是我无法获得某种方法来管理所有下拉列表的选定值并将它们传递给 Controller 。
我能够在 Question 中保留单个值,这是模型中的公共(public)属性。但我不知道如何为所有动态做。
你能指导我如何做吗?
最佳答案
创建一个 View 模型来表示您要选择的问题,即
public class QuestionViewModel
{
public string QuestionId { get; set; }
}
然后将它们添加到您现有的模型中,在没有看到当前模型的情况下,它应该类似于:
public class QuestionsViewModel
{
public QuestionsViewModel()
{
SelectedQuestions = new List<QuestionViewModel>();
}
public List<SelectListItem> QuestionsSelectList { get; set; }
public List<QuestionViewModel> SelectedQuestions { get; set; }
}
在您的 for 循环中使用索引和问题的计数。重要的一点是模型绑定(bind)器如何使用 QuestionId 在帖子中将其发回:
@for(var i = 0; i < Model.SelectedQuestions.Count; i++)
{
@Html.DropDownListFor(m => m.SelectedQuestions[i].QuestionId, Model.QuestionsSelectList as List<SelectListItem>, "Select..", new { @data_native_menu = "false", onchange = "SelectedIndexChanged(id)" })
}
提交表单后,您将获得一组选定的问题,即
var selectedQuestion1 = model.SelectedQuestions[0].QuestionId;
关于c# - 如何获取动态下拉列表选择的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557274/