尝试将 MySQL 表显示为 cshtml
本文关键字:显示 cshtml MySQL | 更新日期: 2023-09-27 18:34:08
我一直在尝试显示MySQL表,但它告诉我它需要一个数据源,所以我尝试了grid.DataSource = UserList;
等等,似乎没有任何效果。
[HttpPost]
public ActionResult Search(Models.SearchModel user)
{
List<Models.SearchModel> UserList = new List<Models.SearchModel>();
MySqlConnection connection = DBConnect.getconnection(); // setting connection to database
MySqlCommand cmd = new MySqlCommand("GetUsers", connection); // search for procedure called "GetData"
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new MySqlParameter("?search", MySqlDbType.VarChar)); // search parameters, if not looking for anythinf gets all the data
cmd.Parameters["?search"].Value = "%" + "" + "%";
cmd.Parameters["?search"].Direction = ParameterDirection.Input;
MySqlDataReader dr = cmd.ExecuteReader(); // telling program to read Data
while (dr.Read())
{
int id = Convert.ToInt16(dr["ID"]);
string user_name = Convert.ToString(dr["user_name"]); // converting data to a string
Models.SearchModel UserMod = new Models.SearchModel(id, user_name);
UserList.Add(UserMod);
}
dr.Close(); // close
DBConnect.CloseConnection(connection); // closes connection
return View("Search", UserList);
}
在 cshtml 页面上,我有以下代码:
@model IEnumerable<AOSExpress.Models.SearchModel>
<div>
@{
var grid = new WebGrid(@Model);
}
@grid.GetHtml()
</div>
我从未使用过WebGrid
但是,从您上面的观点来看,您没有正确地传递Model
。 您的观点应该是:
@model IEnumerable<AOSExpress.Models.SearchModel>
<div>
@{
// Notice the removal of the @ symbol
var grid = new WebGrid(Model);
}
@grid.GetHtml()
</div>
Razor 中的@{ ... }
表示一个代码块,@
只是输出它所前缀的任何内容。 在这种情况下,由于您尝试将Model
作为参数传递给WebGrid
构造函数,而不是输出Model
的内容,因此无需在它前面加上@
符号。