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>
我正在尝试通过 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>