これは私がこれまでに持っているものです。それは機能しますが、コントローラーでデータベース関連の作業を行っており、モデルで行う必要があるため、正しくないことはわかっていますが、その方法で行う方法がわかりません。
モデル
public class files
{
public int fileid { get; set; }
public string fileName { get; set; }
public string filePath { get; set; }
}
コントローラ
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>
}