php到asp.net:如何在视图中显示sql结果

时间:2011-02-14 04:24:59

标签: php asp.net asp.net-mvc asp.net-mvc-2

首先,我是一名PHP开发人员试图了解asp.net。

所以我创建了一个基本的MVC项目。

我有一个没有已知字段的查询(即从产品中选择*)我该怎么做:

  1. 在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();  
    }
    
  2. 如何将结果传递给View,然后循环遍历它们:

    foreach ($data as $key => $val) 
    {
        echo $key.' = '.$val.'<br>';
    }
    
  3. 请帮助,因为这在PHP中非常简单,但在asp.net中似乎非常混乱。

    PS。抱歉格式化。

    欢呼声, TRAV。

1 个答案:

答案 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模型而不遵循最佳实践,你在这里“艰难”地做事。这当然是好的学习,只是需要注意的事情。 ;)