首先,我是一名PHP开发人员试图了解asp.net。
所以我创建了一个基本的MVC项目。
我有一个没有已知字段的查询(即从产品中选择*)我该怎么做:
在Controller中执行 - 我的尝试:
public ActionResult getProducts()
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ToString()))
{
string sql = "select * from products";
SqlCommand cmd = new SqlCommand(sql, cn);
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
return View();
}
如何将结果传递给View,然后循环遍历它们:
foreach ($data as $key => $val)
{
echo $key.' = '.$val.'<br>';
}
请帮助,因为这在PHP中非常简单,但在asp.net中似乎非常混乱。
PS。抱歉格式化。
欢呼声, TRAV。
答案 0 :(得分:1)
首先你需要一个模型类:
public class Product
{
public string Name { get; set; }
public int Price { get; set; }
public int Id { get; set; }
}
在你的控制器中:
public ActionResult getProducts()
{
var products = new List<Product>();
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ToString()))
{
string sql = "select * from products";
SqlCommand cmd = new SqlCommand(sql, cn);
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//read the results
while(rdr.Read() )
{
//map or hydrate a new product
var p = new Product();
p.Name = rdr["Name"];
p.Id = Int.Parse(rdr["Id"]);
p.Price = Int.Parse(rdr["Price"]);
//add new product to list we created earlier
products.Add( p );
}
}
return View(products);
}
在视图中:
//make sure the page inherits from ViewPage<List<Product>>
<% foreach( var product in Model ) { %>
<%= product.Name %>
<% } %>
一个警告。通过不使用像Entity Framework或Nhibernate这样的ORM并且不使用View模型而不遵循最佳实践,你在这里“艰难”地做事。这当然是好的学习,只是需要注意的事情。 ;)