如何解决使用 ASP.NET MVC 和 C# 为同一用户启用多个代码
我使用 ASP.NET MVC 和 C# 创建了我的第一个应用程序。
在 controller.cs
中,我使用如下所示的代码来识别用户 (tUser
) 是否已在数据库表 tUser
中注册。
如果用户存在于表 tUser
中,我设置会话。
如果注册的用户只关联了一个代码(tCode
),我没有问题,例如
+-----------------+--------+
| tUser | tCode |
+-----------------+--------+
| DOMAIN\Edward | D11SU1 |
+-----------------+--------+
例如
+-----------------+--------+
| tUser | tCode |
+-----------------+--------+
| DOMAIN\Edward | D11SU1 |
| DOMAIN\Edward | D11SU2 |
+-----------------+--------+
我稍后使用此信息根据启用代码填充下拉列表。我将使用带有 WHERE 条件的查询,例如
SELECT * FROM mytable WHERE tCode IN ('D11SU1','D11SU2')
这可能吗?
这是我的代码:
private void recognizeuser()
{
try
{
string cs = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
using (var connection = new MysqLConnection(cs))
{
string commandText = " SELECT `tUser`,`tCode` FROM `tUser` " +
" WHERE `tUser` = @Username; ";
using (var command = new MysqLCommand(commandText,connection))
{
if (!String.IsNullOrEmpty(HttpContext.User.Identity.Name.ToString()))
{
command.Parameters.AddWithValue("@Username",HttpContext.User.Identity.Name.ToString());
}
connection.open();
string tUser = string.Empty;
string tCode = string.Empty;
using (MysqLDataReader reader = command.ExecuteReader())
{
reader.Read();
tUser = reader["tUser"].ToString();
tCode = reader["tCode"].ToString();
System.Web.HttpContext.Current.Session["tUser"] = tUser.ToString();
System.Web.HttpContext.Current.Session["tCode"] = tCode.ToString();
System.Web.HttpContext.Current.Session.Timeout = 28800;
}
if (String.IsNullOrEmpty(userName))
{
ViewBag.Message = String.Format("No user!");
}
connection.Close();
}
}
}
catch (Exception ex)
{
TempData["Message"] = "Login Failed.Error - " + ex.Message;
}
}
解决方法
我不知道您以后如何使用这些信息,但简单的解决方法可能是:
using (MySqlDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
if(String.IsNullOrEmpty(tUser))
{
tUser = reader["tUser"].ToString();
tCode += $";{reader["tCode"].ToString()}";
}
else
{
tCode += $";{reader["tCode"].ToString()}";
}
}
System.Web.HttpContext.Current.Session["tUser"] = tUser.ToString();
System.Web.HttpContext.Current.Session["tCode"] = tCode.ToString();
System.Web.HttpContext.Current.Session.Timeout = 28800;
}
您的 tCode
将如下所示:D11SU1;D11SU2
,因此您可以稍后将其拆分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。