繁体   English   中英

在MVC视图中以不同的默认值重用SelectList

[英]Reuse SelectList in MVC View with different default values

我有一个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'哦!

因此,由于这是一个错字,我投票结束这个问题。

感谢那些尝试帮助我的人。 很抱歉浪费您的时间。

只需在局部视图中创建一个选择列表,然后再使用它即可。 要设置默认值,请将默认值作为参数传递给局部视图

例如:

@Html.Partial("YourPartialView", new ViewDataDictionary({ defaultValue : yourvalue }))

您可以重用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属性规定了呈现控件的名称,因此规定了发布时将绑定的字段。 Model.ScoreOptionsSelectList只是从中创建下拉列表的原始数据,因此,由于它们是相同的,因此无需进行多个数据库调用来填充它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM