asp.net mvc下位列表显示值不在绑定的集合中

1.lstInhibit是一个集合,其类是Animal。是个经过条件筛选之后的集合。当选择下拉项时,要从该集合选取一个项
2.animal.Inhibit是Animal是类的一个字段
现在有个问题:animal.Inhibit中的可能项不在lstInhibit集合中,导致绑定的值显示不正确,该如何做这个需求呢?


    @Html.DropDownList("hibit",new SelectList(lstInhibit,"hibit","Name",animal.Inhibit))

在 ASP.NET MVC 中处理这个需求,您可以考虑使用视图模型(ViewModel)来处理数据绑定和显示。以下是一种可能的方法:
创建视图模型:首先,创建一个视图模型,该视图模型包含一个字段,用于表示用户选择的项,以及一个字段,用于表示从 lstInhibit 中选择的项。例如

public class AnimalViewModel
{
    public int SelectedInhibitId { get; set; }
    public List<SelectListItem> AvailableInhibits { get; set; }
}

填充视图模型:在控制器中,将 lstInhibit 集合中的可用项填充到视图模型的 AvailableInhibits 属性中。这将作为下拉列表的选项

public ActionResult YourAction()
{
    var lstInhibit = GetFilteredInhibitList(); // 获取经过条件筛选的集合

    var viewModel = new AnimalViewModel
    {
        AvailableInhibits = lstInhibit
            .Select(item => new SelectListItem
            {
                Value = item.InhibitId.ToString(),
                Text = item.InhibitName
            })
            .ToList()
    };

    return View(viewModel);
}

在视图中绑定下拉列表:在视图中,使用 Html.DropDownListFor 辅助方法来呈现下拉列表,并绑定到视图模型的 SelectedInhibitId 字段

@model YourNamespace.AnimalViewModel
@Html.DropDownListFor(model => model.SelectedInhibitId, Model.AvailableInhibits, "请选择一个项")

在控制器中处理选择:在提交表单时,您可以从视图模型中的 SelectedInhibitId 属性获取用户选择的值,然后使用它来查找匹配的 lstInhibit 中的项。

[HttpPost]
public ActionResult YourAction(AnimalViewModel viewModel)
{
    if (ModelState.IsValid)
    {
        int selectedInhibitId = viewModel.SelectedInhibitId;

        // 根据 selectedInhibitId 查找匹配的 lstInhibit 中的项并处理它

        // 其他操作...
    }

    // 如果提交不成功,返回视图
    return View(viewModel);
}

调试下,lstInhibit 的内容是什么