问题描述
我仅从一列中检索表中的不同值.当我在控制器中调试ViewData时,它已经完美地检索了值,但是在我看来,它说未引用对象.有人可以帮我吗?
I am retrieving distinct values from a table against only one column. when I debug ViewData in controller it has retrieved the values perfectly, but in my view it says Object is not referenced. can some one help me out.
我认为dataValueField和dataTextField未命名为"TeamName";在应用了distinct之后.如何命名我选择的所选列,以便在SelectList下可以工作.谢谢
I think the dataValueField and dataTextField are not named "TeamName" anymore after distinct is applied. how to name selected column of my choice so that below SelectList could work. thanks
控制器
ViewData["TeamNames"] = new SelectList(_context.ActivityMaps.Select(s => s.TeamName).Distinct(), "TeamName", "TeamName", model.TeamName);
查看
<select asp-for="TeamName" class="form-control" asp-items="ViewBag.TeamNames"></select>
推荐答案
假设 TeamName
是字符串类型.
_context.ActivityMaps.Select(s => s.TeamName).Distinct().ToList()
因此上述查询仅返回一个字符串列表,并且没有 TeamName
属性.
So the above query just return a list of string, and it doesn't have TeamName
property.
只需删除dataValueField和dataTextField.
Just remove the dataValueField and dataTextField.
ViewData["TeamNames"] = new SelectList(_context.ActivityMaps.Select(s => s.TeamName).Distinct().ToList(), model.TeamName);
更新:
var names = _db.ActivityMaps.Select(s => s.TeamName).Distinct().Select(n => new { TeamName = n }).ToList();
ViewData["TeamNames"] = new SelectList(names, "TeamName", "TeamName", model.TeamName);
这篇关于下拉列表的SelectList中的不同列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!