将列表发送到视图

时间:2010-11-06 22:32:02

标签: c# asp.net-mvc

我正在处理我的小项目中的一个页面,我希望将数据库中的所有用户列入页面。

目前我正在选择声明,但我不知道如何将其传递给视图:

public ActionResult Index()
{
  SqlConnection connection = new ...
  connection.Open();

  SqlCommand command = new SqlCommand("SELECT * FROM users", connection);

  ???

如何将其传递给视图以及如何列出所有项目?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您需要做的是使用您的用户列表填充ViewData.Model。所以试试这个:

//Same code as you already have...

SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);

List<CustomUserObject> userList = new List<CustomUserObject>();

foreach (DataRow dr in dt.Rows)
{
     //Create a class to house your user object before this next part will work.
     CustomUserObject cuo = new CustomUserObject { FirstName = dt.Rows[0]["FirstName"].ToString(), LastName = dt.Rows[0]["LastName"].ToString(), etc... };
     userList.Add(cuo);
}

ViewData.Model = userList;

return View();

现在,假设您尚未为操作方法创建视图,请右键单击操作方法内部的某个位置(在Visual Studio中)并创建视图。确保视图选择了强类型视图。将视图模型设置为IEnumerable<CustomUserObject>。现在当你在视图中时,你会像这样引用你的模型。

<% foreach (CustomUserObject cuo in Model)
{ %>
     <%: Html.TextBoxFor(cuo.FirstName) %>
     <!-- More controls for all properties on your user object... -->
<% } %>