从c#对象列表中获取下拉列表选择选项
本文关键字:下拉列表 选择 选项 获取 对象 列表 | 更新日期: 2023-09-27 18:14:38
我有一个在c# Razor视图中接收的对象列表
@model IEnumerable<Project.Models.EvaluationObject>
在IEnumerable的每个对象中,我都有一个名为"MaxValue"的属性,我想把它放在html的输入选择中。
foreach(var item in Model){
<select>
<option value=1>One</option>
<option value=2>Two</option>
<option value=3>Three</option>
<option value=4>Four</option>
</select>
}
对于每个项目,我想用项目的值构建一个选择输入。MaxValue选择
。在第一个循环项中。MaxValue = 3,那么我应该构建下一个select:
<select>
<option value=1>One</option>
<option value=2>Two</option>
<option value=3 selected="selected">Three</option>
<option value=4>Four</option>
</select>
项目。MaxValue总是在1到4之间,所以如果该值为3,则选择输入中的选定值为3。
我的第一个解决方案是在每个选项中放入一个if语句,但我认为这是不切实际的:
foreach(var item in Model){
<select>
<option value=1 @if(item.MaxValue==1){<text>selected="selected"</text>})>One</option>
<option value=2 @if(item.MaxValue==2){<text>selected="selected"</text>}>Two</option>
<option value=3 @if(item.MaxValue==3){<text>selected="selected"</text>}>Three</option>
<option value=4 @if(item.MaxValue==4){<text>selected="selected"</text>}>Four</option>
</select>
}
希望你能帮助我,也许我应该使用一些JavaScript
您可以添加一个IEnumerable<SelectListItem>
到您的模型:
模型:
public class EvaluationObject
{
public IEnumerable<SelectListItem> EvaluationList
{
get
{
return Enumerable.Range(1, 4)
.Select(x => new SelectListItem
{
Selected = x == MaxValue,
Text = NumberToWord(x),
Value = x
});
}
}
public int MaxValue { get; set; }
public int EvaluationNumber { get; set; }
}
视图:
foreach (var item in Model)
{
@Html.DropDownListFor(x => x.EvaluationNumber, item.EvaluationList)
}