Asp.net 如何在mysql数据库中存储文件列表并根据用户角色显示
我是一个asp.NETMVC新手。自从经典asp之后,我什么都没做过。我想根据用户角色显示Mysql数据库中的文件列表。到目前为止,我已经创建了两个表,一些文件将由多个角色查看。我还使用MySql成员资格提供程序 表文件Asp.net 如何在mysql数据库中存储文件列表并根据用户角色显示,asp.net,mysql,asp.net-mvc-3,roles,Asp.net,Mysql,Asp.net Mvc 3,Roles,我是一个asp.NETMVC新手。自从经典asp之后,我什么都没做过。我想根据用户角色显示Mysql数据库中的文件列表。到目前为止,我已经创建了两个表,一些文件将由多个角色查看。我还使用MySql成员资格提供程序 表文件 FileID, FileName, FilePath 表文件角色 FileID, RoleID 我想我可以将一个文件添加到文件表中,然后对于有权访问该文件的每个角色,我需要将文件ID添加到文件角色表中,还需要从my\u aspnet\u roles表中获取RoleID,并将
FileID, FileName, FilePath
表文件角色
FileID, RoleID
我想我可以将一个文件添加到文件表中,然后对于有权访问该文件的每个角色,我需要将文件ID添加到文件角色表中,还需要从my\u aspnet\u roles
表中获取RoleID
,并将其添加到
然后,当有人去查看文件时,它会获取他们所处的每个角色的ID,然后从数据库中获取文件列表
我不知道从哪里开始,因此非常感谢您的帮助。让我告诉您最新情况: 1.创建用户并将其添加到角色 Webdeveloper Express和Visual Studio为您的网站提供了一个Web管理工具: 要访问网站管理工具,请在“网站”菜单上单击“ASP.Net配置” 参考: 您可以添加用户和角色,并从中向角色添加用户 2.创建数据库记录(假设您有某种mysql管理面板) 现在在数据库中创建一些文件记录,并在文件和角色之间创建一些关联记录。我将使用
RoleName
而不是RoleID
,因为默认的RoleProvider接口与string
名称一起工作
3.了解如何从ASP.NET查询mysql数据库
请阅读以下示例:
4.根据用户角色创建正确的查询
希望这能让你达到目的…让我告诉你最新情况: 1.创建用户并将其添加到角色 Webdeveloper Express和Visual Studio为您的网站提供了一个Web管理工具: 要访问网站管理工具,请在“网站”菜单上单击“ASP.Net配置” 参考: 您可以添加用户和角色,并从中向角色添加用户 2.创建数据库记录(假设您有某种mysql管理面板) 现在在数据库中创建一些文件记录,并在文件和角色之间创建一些关联记录。我将使用
RoleName
而不是RoleID
,因为默认的RoleProvider接口与string
名称一起工作
3.了解如何从ASP.NET查询mysql数据库
请阅读以下示例:
4.根据用户角色创建正确的查询
希望这能让你达到目的…这就是我目前所拥有的。它可以工作,但我知道它是不正确的,因为我在控制器中做数据库的事情,这应该在模型中完成,但我不知道如何以这种方式完成 模型 控制器
public ActionResult Index()
{
IList<files> downloads = new List<files>();
// Get Users Role(s) thanks Ropstah
string[] userRoles = Roles.GetRolesForUser(User.Identity.Name);
string userRolesForSqlQuery = userRoles.Select(x => "'" + x + "'").Aggregate((a, b) => a + "," + b);
// MySql Connection thanks again Ropstah
string connectionString = "my data source";
var MySqlConnectionString = String.Format(@"SELECT fileid, fileName, filePath, FROM downloads
INNER JOIN downloadsroles on downloads.fileid = downloadsroles.downloadsid
WHERE downloadsroles.roleName IN ({0});", userRolesForSqlQuery);
MySqlConnection conn = new MySqlConnection(connectionString);
MySqlCommand comm = conn.CreateCommand();
MySqlDataReader Reader;
comm.CommandText = MySqlConnectionString;
conn.Open();
Reader = comm.ExecuteReader();
while (Reader.Read())
{
downloads.Add(new files() { fileName = Reader["fileName"].ToString(),
filePath = Reader["filePath"].ToString()});
}
conn.Close();
return View(downloads);
}
public ActionResult Index()
{
IList downloads=新列表();
//获取用户角色感谢Ropstah
字符串[]userRoles=Roles.GetRolesForUser(User.Identity.Name);
字符串userRolesForSqlQuery=userRoles.Select(x=>“'+x+”)。聚合((a,b)=>a+”,“+b);
//MySql连接再次感谢Ropstah
字符串连接string=“我的数据源”;
var MySqlConnectionString=String.Format(@“从下载中选择文件ID、文件名、文件路径
downloads.fileid=downloadsroles.downloadsid上的内部连接downloadsroles
其中downloadsroles.roleName位于({0});”,userRolesForSqlQuery);
MySqlConnection conn=新的MySqlConnection(connectionString);
MySqlCommand comm=conn.CreateCommand();
MySqlDataReader;
comm.CommandText=MySqlConnectionString;
conn.Open();
Reader=comm.ExecuteReader();
while(Reader.Read())
{
downloads.Add(新文件(){fileName=Reader[“fileName”].ToString(),
filePath=Reader[“filePath”].ToString()});
}
康涅狄格州关闭();
返回视图(下载);
}
看法
@foreach(在ViewData.Model中下载var)
{
@下载.fileName
@下载.filePath
}
这是我到目前为止所拥有的。它可以工作,但我知道它是不正确的,因为我在控制器中做数据库的事情,这应该在模型中完成,但我不知道如何以这种方式完成
模型
控制器
public ActionResult Index()
{
IList<files> downloads = new List<files>();
// Get Users Role(s) thanks Ropstah
string[] userRoles = Roles.GetRolesForUser(User.Identity.Name);
string userRolesForSqlQuery = userRoles.Select(x => "'" + x + "'").Aggregate((a, b) => a + "," + b);
// MySql Connection thanks again Ropstah
string connectionString = "my data source";
var MySqlConnectionString = String.Format(@"SELECT fileid, fileName, filePath, FROM downloads
INNER JOIN downloadsroles on downloads.fileid = downloadsroles.downloadsid
WHERE downloadsroles.roleName IN ({0});", userRolesForSqlQuery);
MySqlConnection conn = new MySqlConnection(connectionString);
MySqlCommand comm = conn.CreateCommand();
MySqlDataReader Reader;
comm.CommandText = MySqlConnectionString;
conn.Open();
Reader = comm.ExecuteReader();
while (Reader.Read())
{
downloads.Add(new files() { fileName = Reader["fileName"].ToString(),
filePath = Reader["filePath"].ToString()});
}
conn.Close();
return View(downloads);
}
public ActionResult Index()
{
IList downloads=新列表();
//获取用户角色感谢Ropstah
字符串[]userRoles=Roles.GetRolesForUser(User.Identity.Name);
字符串userRolesForSqlQuery=userRoles.Select(x=>“'+x+”)。聚合((a,b)=>a+”,“+b);
//MySql连接再次感谢Ropstah
字符串连接string=“我的数据源”;
var MySqlConnectionString=String.Format(@“从下载中选择文件ID、文件名、文件路径
downloads.fileid=downloadsroles.downloadsid上的内部连接downloadsroles
其中downloadsroles.roleName位于({0});”,userRolesForSqlQuery);
MySqlConnection conn=新的MySqlConnection(connectionString);
MySqlCommand comm=conn.CreateCommand();
MySqlDataReader;
comm.CommandText=MySqlConnectionString;
conn.Open();
Reader=comm.ExecuteReader();
while(Reader.Read())
{
downloads.Add(新文件(){fileName=Reader[“fileName”].ToString(),
filePath=Reader[“filePath”].ToString()});
}
康涅狄格州关闭();
返回视图(下载);
}
看法
@foreach(var在
public ActionResult Index()
{
IList<files> downloads = new List<files>();
// Get Users Role(s) thanks Ropstah
string[] userRoles = Roles.GetRolesForUser(User.Identity.Name);
string userRolesForSqlQuery = userRoles.Select(x => "'" + x + "'").Aggregate((a, b) => a + "," + b);
// MySql Connection thanks again Ropstah
string connectionString = "my data source";
var MySqlConnectionString = String.Format(@"SELECT fileid, fileName, filePath, FROM downloads
INNER JOIN downloadsroles on downloads.fileid = downloadsroles.downloadsid
WHERE downloadsroles.roleName IN ({0});", userRolesForSqlQuery);
MySqlConnection conn = new MySqlConnection(connectionString);
MySqlCommand comm = conn.CreateCommand();
MySqlDataReader Reader;
comm.CommandText = MySqlConnectionString;
conn.Open();
Reader = comm.ExecuteReader();
while (Reader.Read())
{
downloads.Add(new files() { fileName = Reader["fileName"].ToString(),
filePath = Reader["filePath"].ToString()});
}
conn.Close();
return View(downloads);
}
@foreach (var downloads in ViewData.Model)
{
<tr>
<td>
@downloads.fileName
</td>
<td>
@downloads.filePath
</td>
</tr>
}