asp.net mvc4.0 razor页面获取数据库表记录显示在页面上,页面前段显示字段名必须区分大小写,否则不认识字段名,提示错误信息
1.control类
public ActionResult ListUser() { //TestDataContext db = new TestDataContext(); //IEnumerable<tbUser> model = from u in db.tbUser orderby u.vchUserCode select u; //return View(model); try { string strSql = "select VCHUSERCODE,VCHUSERNAME,VCHORGCODE,INTKIND,INTSTATUS," + //VCHPASSWORD, "VCHSEX, VCHIDCARD, TSPLATERLOGIN, VCHLATERIP, VCHEMAIL, VCHCREATOR,DATCREATE, VCHDES, DATPASSWORD " + "from DBO.TBUSER order by DATCREATE;"; DbHelper db = new DbHelper(); DbCommand cmd = db.GetSqlStringCommand(strSql); DataSet ds = db.ExecuteDataSet(cmd); List<IDictionary> list = ConvertToDictionary(ds.Tables[0]); return View(list); } catch (Exception ex) { throw new Exception(ex.Message); } } private List<IDictionary> ConvertToDictionary(DataTable dtObject) { var columns = dtObject.Columns.Cast<DataColumn>(); var dictionaryList = dtObject.AsEnumerable() .Select(dataRow => columns .Select(column => new { Column = column.ColumnName, Value = dataRow[column] }) .ToDictionary(data => data.Column, data => data.Value)).ToList().ToArray(); return dictionaryList.ToList<IDictionary>(); }
2.razor页面
@* @model IEnumerable<Contract.Web.Code.tbUser> *@ @using System.Dynamic @model List<System.Collections.IDictionary> @{ ViewBag.Title = "ListUser"; } <h2>ListUser</h2> <p> @Html.ActionLink("刷新", "ListUser") </p> @{ var result = new List<dynamic>(); foreach (var emprow in Model) { var row = (IDictionary<string, object>)new ExpandoObject(); Dictionary<string, object> eachEmpRow = (Dictionary<string, object>)emprow; foreach (KeyValuePair<string, object> keyValuePair in eachEmpRow) { row.Add(keyValuePair); } result.Add(row); } //var grid = new WebGrid(result); var grid = new WebGrid(source: result , columnNames:new[]{"VCHUSERCODE","VCHUSERNAME","VCHEMAIL"}, defaultSort: "VCHUSERCODE", rowsPerPage: 20); } @* @if (@Model != null) { @grid.GetHtml(tableStyle: "grid", headerStyle: "head", alternatingRowStyle: "alt"); }*@ @grid.GetHtml( tableStyle: "grid", headerStyle: "head", alternatingRowStyle: "alt", columns: grid.Columns( grid.Column("VCHUSERCODE", "用户编号"), grid.Column("VCHUSERNAME", "用户名称"), grid.Column("VCHEMAIL", "Email") ) )