我正在尝试根据登录用户的UPN从MS SQL数据库中提取信息。我想对于某些人来说这似乎微不足道。
在控制器中,我得到用户的UPN:
var identity = (ClaimsIdentity)User.Identity;
loggedInUser.UserHandle = identity.Claims.Where(c => c.Type == ClaimTypes.Upn).First().Value;
//get userHandle from UPN
int index = loggedInUser.UserHandle.LastIndexOf("@");
if (index > 0)
loggedInUser.UserHandle = loggedInUser.UserHandle.Substring(0, index);
在此之下,我尝试获取数据:
String sql = "Select * from [MyDatabase].[dbo].[TableName] where UserHandle = @userHandle";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add(new SqlParameter("userHandle", loggedInUser.UserHandle));
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
user.FirstName = reader["FirstName"].ToString();
user.LastName = reader["LastName"].ToString();
}
conn.Close();
}
return View(loggedInUser);
我可以使用@ Model.UserHandle在View中看到正确的UserHandle。但是它在Controller中返回null,因此我无法从表中获取firstName和LastName。
我在做什么错?如何获取要在我的sql字符串中使用的UPN值,以便可以从表中获取数据?
答案 0 :(得分:0)
为了以防万一,将其保留在此处。
我需要传递“用户”而不是“ loggedInUser”:
return View(user);