我有一个SelectList用于填充视图中的下拉列表,为类别提供1到5的分数。有7个类别,都可以有单独的分数。
我已经成功创建了一个视图,它将SelectList显示为每个项目的下拉列表,并在我创建新对象时为该类别指定所选值 - 但我正在努力相应的编辑视图。
我认为最好再次重复使用下拉列表,并将默认值设置为适用类别的数据库中的值。但是,似乎无法在视图中设置默认值 - 只能在首次创建SelectList时设置默认值。
我按如下方式创建了SelectList
model.ScoreOptionsSelectList = _tl_RangeService.List()
.Select(s => new SelectListItem
{
Text = s.CustSatRange,
Value = s.CustSatRange
})
.ToList();
_tl_RangeService.List()
返回的项目列表中包含定义CustSatRange
的唯一值的项目(就本例而言,这些数字的范围是1到5)。
然后我在视图中使用它
<td class="@item.LatestScoreStyle">
@Html.DropDownListFor(
model => model.Manage_Rating,
Model.ScoreOptionsSelectList,
null,
new { @id = "ddlScores" + @rowIndex, @class = "form-control" })
</td>
我尝试将默认值设置为当前Manage_Rating
,因此在提交表单时会更新Manage_Rating
。
目前呈现如下。除管理之外还有许多其他类别将使用相同的SelectList来填充下拉列表。请注意,“调查类型”正在成功运行,因为它是仅适用于单个类别的SelectList。
有没有办法创建一个SelectList来重复使用以填充下拉列表,但是在视图中创建每个实例时,为每个实例设置不同的默认值?或者我是否被迫为每个类别创建一个新的SelectList?
您可以提供的任何建议都表示赞赏
修改
所以经过一整天的搔痒(因此这里的问题),当我试图提供进一步的澄清时,我发现我犯了一个菜鸟错误,并没有在第一个设置Managment_Rating
地点。 D'哦!
因此,这是一个错字,我投票结束这个问题。
感谢那些试图帮助我的人。抱歉浪费你的时间。
答案 0 :(得分:0)
简单地说,在局部视图中创建一个选择列表并重复使用它。 要设置默认值,请将默认值作为参数
传递给局部视图forexample:
@Html.Partial("YourPartialView", new ViewDataDictionary({ defaultValue : yourvalue }))
答案 1 :(得分:0)
您可以重复使用ScoreOptionsSelectList
来填充多个下拉列表,如下所示:
创建模型时填充类别默认值。由于这是Edit
视图,因此在检索要编辑的记录后,您将从数据库中填充这些视图。我使用了一个简单的例子用于演示目的:
model.category1 = 1;
model.category2 = 2;
model.category3 = 3;
model.category4 = 4;
在视图中,您使用创建控件,使用相同的对象填充下拉列表:
@Html.DropDownListFor(model => model.category1, Model.ScoreOptionsSelectList)
@Html.DropDownListFor(model => model.category2, Model.ScoreOptionsSelectList)
@Html.DropDownListFor(model => model.category3, Model.ScoreOptionsSelectList)
@Html.DropDownListFor(model => model.category4, Model.ScoreOptionsSelectList)
model属性指示呈现控件的名称,因此指定POSTed时将绑定的字段。 Model.ScoreOptionsSelectList
只是创建下拉列表的原始数据,因此无需进行多个数据库调用来填充它们,因为它们完全相同。