【问题标题】:Reading information from database by controller in ASP.NET Core MVC在 ASP.NET Core MVC 中通过控制器从数据库中读取信息
【发布时间】:2020-05-18 00:30:08
【问题描述】:

动作发生在控制器 asp.net 核心中

//获取登录网站的登录人

var userName = _httpContextAccessor.HttpContext.User.Identity.Name; //(works/checked)

// 从数据库中获取有关此人的信息

var userDetails = _context.Members.FirstOrDefault(f => f.Adlogin == userName);//(works/checked)

// 比较管理员的登录和登录站点的人的管理员的登录 // 并使用他的登录名从“名称”列中找到该经理的全名

var nameManager = _context.Members.Where(x => x.Login == userDetails.ManagerLogin).Select(i => new { userNameManager = i.Name}); //(works/checked)

// 不知何故,我需要通过 viewdata 向站点发送数据 // 我尝试了如下,但它不起作用

ViewData["Manager"] = nameManager;

错误:

RuntimeBinderException: 'DevExtreme.AspNet.Mvc.Builders.TextBoxBuilder.Value(string)' 的最佳重载方法匹配有一些无效参数

//在视图中填充文本框

@(Html.DevExtreme().TextBox()
       .Value(ViewBag.Manager)
       .ReadOnly(true)

我想要什么:帮助发送/阅读有关经理姓名的信息

【问题讨论】:

  • 如何在视图中填充文本框?我认为这就是错误的来源。可以出示一下代码吗?
  • @haldo 在视图中:.Value(ViewData["Manager"]) => CS1503 - 参数 1:无法从 'object' 转换为 'string' ||||在控制器中:ViewBag.Manager = nameManager => RuntimeBinderException:“DevExtreme.AspNet.Mvc.Builders.TextBoxBuilder.Value(string)”的最佳重载方法匹配有一些无效参数
  • 我已经更新了我的答案,看看现在对你有没有帮助。

标签: c# asp.net .net sql-server asp.net-core


【解决方案1】:

我认为问题出在这一行:

var nameManager = _context.Members.Where(x => x.Login == userDetails.ManagerLogin).Select(i => new { userNameManager = i.Name});

这将返回一个集合(即使它只有一个成员)。

使用FirstOrDefault 代替,这将返回一个Member,而不是Where,它返回一个集合。我建议试试这个:

var nameManager = _context.Members
                          .FirstOrDefault(x => x.Login == userDetails.ManagerLogin)?.Name;

现在nameManager 应该是单个字符串(不是集合),它将是MemberName 属性。

【讨论】:

  • 在元素“成员”中不存在定义“选择”|||||在 First 或 Default 之后,已经从模型中获取字段 |||| FOD 后我无法使用选择
  • 是的,你的权利,对不起,我会更新我的答案。您可以尝试FirstOrDefault(x => x.Login == userDetails.ManagerLogin)?.Name 并完全删除Select 吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-28
  • 2014-06-14
  • 1970-01-01
  • 2014-01-09
  • 2010-09-29
  • 2019-08-31
  • 2021-11-03
  • 2020-02-28
相关资源
最近更新 更多