首页 > 解决方案 > Entity FrameWork Core 不显示查询返回的值

问题描述

我正在尝试从页面上的列中显示特定值,并且我正在使用 ASP.NET Core MVC 和 Entity FrameWork Core 来执行此操作。我面临的问题是它不返回列值,而是返回一些方法。

这是控制器

public IActionResult newTicket()
            {
                string getUsername = HttpContext.Session.GetString("username");
                ViewBag.username = _context.users.Where(o => o.username == getUsername).ToList();
    
                return View();
            }

所以基本上这个动作应该做什么,它应该首先从会话中获取用户名。然后,它应该在数据库中运行一个查询,如果数据库中有类似的用户名,则使用 viewbag 将用户名的值传递给视图。风景

<input class="form-control w-50" asp-for="cName" required="required" value="@ViewBag.username"/>

这就是输出的样子,我不希望它看起来像那样,我希望它显示用户名。

https://i.stack.imgur.com/n6dXo.png

如果我不得不通过另一种语言(PHP MySQL)来解释我在这个问题中的意思,那就是。

$query = mysqli_query($connection_variable,"SELECT * from complaints 
WHERE username = '$username'");
while ($row = mysqli_fetch_assoc($query))
{
    echo $row['username'];
}

这就是我的意思,如果我没有解释,你可以询问细节。

标签: asp.net-core

解决方案


您可以在查看以下内容时执行以下操作:

@foreach(User usr in ViewBag.username)
{
<b>@usr.username</b>
} 

但是现在您所做的只是调用默认ToString()的收集方法。这就是你得到这个结果的原因。您应该调用该集合中元素的属性。

或者你可以试试这个:

ViewBag.username = _context.users.FirstOrDefault(o => o.username == getUsername);

推荐阅读