在ASP.NET MVC中,可以使用ADO.NET来调用存储过程并在不同的视图或控制器中重复使用。
首先,在项目中创建一个存储过程。假设我们有一个名为GetProducts
的存储过程,它返回所有产品的列表。存储过程的示例如下:
CREATE PROCEDURE GetProducts
AS
BEGIN
SELECT * FROM Products
END
接下来,在数据访问层中创建一个DataAccess
类来处理与数据库的交互。在这个类中,可以编写一个方法来调用存储过程并返回结果。示例代码如下:
public class DataAccess
{
private string connectionString = "your_connection_string_here";
public List GetProducts()
{
List products = new List();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("GetProducts", connection);
command.CommandType = CommandType.StoredProcedure;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Product product = new Product();
product.Id = Convert.ToInt32(reader["Id"]);
product.Name = reader["Name"].ToString();
product.Price = Convert.ToDecimal(reader["Price"]);
products.Add(product);
}
reader.Close();
}
return products;
}
}
上述代码创建了一个名为GetProducts
的方法,它通过执行名为GetProducts
的存储过程来获取产品列表,并将结果转换为Product
对象的列表。
接下来,在需要调用存储过程的控制器中实例化DataAccess
类,并调用GetProducts
方法。示例代码如下:
public class HomeController : Controller
{
private DataAccess dataAccess = new DataAccess();
public ActionResult Index()
{
List products = dataAccess.GetProducts();
return View(products);
}
}
在上述示例中,Index
方法通过实例化DataAccess
类并调用GetProducts
方法来获取产品列表,并将其传递给Index
视图。
最后,在视图中循环遍历产品列表并显示相关信息。示例代码如下:
@model List
@foreach (var product in Model)
{
@product.Name - @product.Price
}
上述示例中,@model List
指定了视图的模型类型,并通过循环遍历产品列表来显示每个产品的名称和价格。
通过上述步骤,您可以在不同的视图或控制器中调用相同的存储过程,并重复使用代码。