我想在控制器中发送HTTP POST请求。
这是我的代码:
[HttpPost]
public IHttpActionResult login([FromBody] ClubAPI.Models.AllRequest.login userid)
{
using (DAL.ClubEntities db = new ClubEntities())
{
DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString()));
if (q == null)
{
return Ok(new ClubAPI.Models.AllResponse.loginResponse
{
msg = "bad",
state = false,
});
}
return Ok(new ClubAPI.Models.AllResponse.loginResponse
{
msg = "good",
state = true,
token = q.UserName,
});
}
}
但现在我收到以下错误:
"非静态方法需要webapi中的目标"我无法解决这个问题。该 错误与此行有关: db.AspNetUsers.Single(T => t.Id.Equals(userid.id.ToString()));
当我将ID更改为真实ID时,例如" t.Id.Equals(2342)
",错误已解决;但我不想使用真实的身份证。
答案 0 :(得分:1)
Try this code instead of
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString());
into
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id);
答案 1 :(得分:0)
确保此userid
而非null
和userid.id.ToString()
未返回null
DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString()));
当任何lambda变量返回null
时,就会发生这种类型的错误。
为了防止这种情况,您可以这样做
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString());
答案 2 :(得分:0)
看来您的问题出现在以下行中,可能找不到用户:
DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString()));
写它(取决于id的类型),当找不到用户时将返回null:
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString());
答案 3 :(得分:0)
If t.Id.Equals(2342)
works, then t.Id must not be a string and so you shouldn't be using .ToString()
Try
db.AspNetUsers.Single(t=>t.Id.Equals(userid.id));
or
db.AspNetUsers.Single(t=>t.Id == userid.id);