【问题标题】:ASP.Net Core 3.1 SelectList load wrong data from ViewDataASP.Net Core 3.1 SelectList 从 ViewData 加载错误数据
【发布时间】:2020-05-10 04:12:11
【问题描述】:

我正在尝试通过 ViewData 加载 SelectList。以前,我已经用 List 加载了 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>

中间窗口

?@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}
    ...

【问题讨论】:

    标签: visual-studio-2019 razor-pages asp.net-core-3.1


    【解决方案1】:

    我找到了解决方案,但我仍然不明白为什么控件会这样。所以,如果有人能解释我为什么,我会非常感激。

    我变了

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

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

    它有效。

    【讨论】:

      【解决方案2】:

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

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

       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>
      

      【讨论】:

      • 存储库已经返回一个列表。问题是 。谢谢你的回答。
      猜你喜欢
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2020-04-15
      相关资源
      最近更新 更多