我试图通过模型从数据库中获取数据并将其显示在视图上。这是示例代码,我能够提取数据但是没有显示在视图上。我很感激任何帮助。提前致谢
Model Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
namespace Test.Models
{
public class CustModel
{
SqlConnection con = new SqlConnection();
List<CustModel> CustList = new List<CustModel>();
public String CustName { get; set; }
public String CustPhone { get; set; }
CustModel p = null;
public List< CustModel > GetCustInfo()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CustConnectionString"].ToString());
con.Open();
using (con)
{
SqlCommand cmd = new SqlCommand("select * FROM Cust_tb where ZIP = 37771", con);
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
p = new CustModel ();
p.CustName =Convert.ToString(rd.GetSqlValue(0));
p.CustPhone = Convert.ToString(rd.GetSqlValue(10));
CustList.Add(p);
}
}
return CustList;
}
}
}
Controller Code
public ActionResult CustDisplay()
{
CustModel p = new CustModel();
List<CustModel> Li = new List<CustModel>();
Li = p. GetCustInfo ();
ViewData["CustInfo"] = Li;
return View("CustDisplay");
}
View Code
@model Test.Models.CustModel
@{
ViewBag.Title = "CustDisplay";
}
<!DOCTYPE html>
<head>
<title> Customer Information </title>
</head>
<body>
<div class="display-label">
Name
</div>
<div class="display-field">
@Html.DisplayFor(Model => Model.CustName)
</div>
<div class="display-label">
Phone
</div>
<div class="display-field">
@Html.DisplayFor(Model => Model. CustPhone)
</div>
</body>
</html>
答案 0 :(得分:2)
也许我过度简化了这一点 - 但我认为这只是因为你实际上没有在视图中发送或使用你的列表...我没有像你那样得到我的数据 - 所以我会假设您获得了所需的数据,并且返回的列表包含p(名称和电话)中的1到多行数据
即使你在ViewData中传递了你的列表 - 你也没有在视图中分配它...最好的方法是在你的控制器中调用return View(Li);
而不是return View("CustDisplay");
你是已经在您要调用的视图中 - 因此它会将列表发送到@model。 (可能有一种方法将ViewData分配给视图中的模型) - 但我将列表传入,因此数据被绑定...
您应该制作模型@model IEnumerable<Test.Models.CustModel>
然后
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.CustName)
</th>
<th>
@Html.DisplayNameFor(model => model.CustPhone)
</th>
</tr>
@foreach (var item in Model){
<tr>
<td>
@Html.DisplayFor(modelItem => item.CustName)
</td>
<td>
@Html.DisplayFor(modelItem => item.CustPhone)
</td>
</tr>
}
</table>