ASP.Net Core 3.1 SelectList 从 ViewData 加载错误数据

ASP.Net Core 3.1 SelectList load wrong data from ViewData

我正在尝试通过 ViewData 加载 SelectList。以前,我用一个列表加载了 ViewData["Almacenes"]。但是,当显示视图时,SelectList 上没有预期的数据。如果我检查 chrome 中的元素,它会显示加载了错误的数据。谁能帮帮我?我真的很感激。谢谢。

存储库

    public interface ISga_eDataService
    {
        public List<SelectListItem> GetAlmacenes();
    }

控制器

        public IActionResult Index()
        {
           ViewData["almacenes"] = _dataService.GetAlmacenes();
            return View();
        }

查看

<div class="text-center">
    <span>Almacenes</span>
    <select id="Almacenes" asp-items="(IEnumerable<SelectListItem>)@ViewData["almacenes"]" />
</div>

正在检查 Chrome

中的 SelectList
<select id="Almacenes">








            © 2020 - Sga_eMinMaxChecker - Privacy


    <script src="/lib/jquery/dist/jquery.min.js"></script>
    <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="/js/site.js?v=4q1jwFhaPaZgr8WAUSrux6hAuh0XDg9kPS3xIVq36I0"></script>



</select>

中级 Window

?@ViewData["almacenes"]
Count = 32
    [0]: {Microsoft.AspNetCore.Mvc.Rendering.SelectListItem}
    [1]: {Microsoft.AspNetCore.Mvc.Rendering.SelectListItem}
    [2]: {Microsoft.AspNetCore.Mvc.Rendering.SelectListItem}
    [3]: {Microsoft.AspNetCore.Mvc.Rendering.SelectListItem}
    [4]: {Microsoft.AspNetCore.Mvc.Rendering.SelectListItem}
    ...

我找到了解决办法,但我还是不明白为什么控件会这样。所以,如果有人能告诉我原因,我将不胜感激。

我已经从

<select id="Almacenes" asp-items="(IEnumerable<SelectListItem>)@ViewData["almacenes"]" />

<select id="Almacenes" asp-items="(IEnumerable<SelectListItem>)@ViewData["almacenes"]"></select>

而且有效。

我有同样的问题,我通过发送 ViewData 到 View as selectList 来解决这个问题。

您可以在控制器中使用它:

 var AlmacenesList = _dataService.GetAlmacenes();
 List<SelectListItem> Almacenes= new List<SelectListItem>();
 provinces.AddRange(AlmacenesList);
 ViewData["Almacenes"] = new SelectList(Almacenes, "Value", "Text");

和视图:

<select asp-items="@(ViewData["Almacenes"] as SelectList)"></select>