ASP.NET MVC中如何通过姓名获取所有同名Personel列表?
问题分析与解决
你的控制器查询逻辑是正确的,Where(p => p.Ad.Contains(personelAdi)).ToList()会筛选出所有姓名包含查询关键词的人员。当前只返回第一条匹配数据,问题大概率出在查询结果视图(PersonelAramaSonucu.cshtml)没有遍历整个结果集合,仅渲染了第一条数据。
修复步骤
1. 修改结果视图代码
确保PersonelAramaSonucu.cshtml正确遍历传入的List<Personel>集合,示例代码如下:
@model List<Personel> @{ ViewBag.Title = "Arama Sonuçları"; } <h2>Personel Arama Sonuçları</h2> @if (Model.Count == 0) { <p>Hiçbir personel bulunamadı.</p> } else { <div> @foreach (var personel in Model) { <div style="border:1px solid #eee; padding:10px; margin:10px 0;"> <p>ID: @personel.Id</p> <p>Ad: @personel.Ad</p> <p>Soyad: @personel.Soyad</p> <p>TC Kimlik No: @personel.TcKimlikNo</p> <p>Doğum Tarihi: @personel.DogumTarihi.ToShortDateString()</p> </div> } </div> }
2. 验证集合数据(可选)
如果视图修改后问题依旧,在控制器的PersonelAramaSonucu方法里加调试断点,确认aramaSonucundakiPersoneller的Count值是否为2(查询"Ali"时)。如果集合只有1条数据,检查静态列表_personeller是否在其他业务逻辑中被意外修改。
额外优化
- 可以将查询改为不区分大小写的匹配,避免大小写差异导致漏查:
var aramaSonucundakiPersoneller = _personeller .Where(p => p.Ad.IndexOf(personelAdi, StringComparison.OrdinalIgnoreCase) >= 0) .ToList();
内容的提问来源于stack exchange,提问作者kocakh
相关产品推荐
相关产品推荐

