You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

熟悉Laravel,求教ASP.NET视图中遍历SQL Server数据的方法

嘿,我懂你现在的纠结——从熟悉的Laravel转到ASP.NET,确实会有不少写法上的转换,但其实在视图里遍历数据库数据的核心思路和Laravel是一致的,只是具体实现步骤不一样而已。我来一步步帮你理清楚:

第一步:补全控制器中获取数据的逻辑

你的控制器代码看起来没写完,首先我们需要先从SQL Server中查询到数据,这里推荐用强类型模型来接收数据(就像Laravel里的Model类一样),这样在视图里操作会更清晰。

1. 先定义对应数据库表的模型类

比如你的表是Products,那可以定义一个Product类(字段对应表的列):

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    // 根据你的实际表结构,添加其他字段
}

2. 补全控制器的Index方法获取数据

这里给你两种方式:原生ADO.NET(对应你目前用的SqlConnection),以及更简洁的Entity Framework Core(类似Laravel的Eloquent,长期开发更推荐)。

方式一:原生ADO.NET写法

public IActionResult Index()
{
    var connectionString = configuration.GetConnectionString("CustomDatabase");
    var productList = new List<Product>();

    // using语句会自动释放连接,避免资源泄漏
    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // 替换成你的实际查询语句
        var queryCommand = new SqlCommand("SELECT Id, Name, Price FROM Products", connection);
        
        using (var dataReader = queryCommand.ExecuteReader())
        {
            while (dataReader.Read())
            {
                var product = new Product
                {
                    Id = dataReader.GetInt32(0),
                    Name = dataReader.GetString(1),
                    Price = dataReader.GetDecimal(2)
                };
                productList.Add(product);
            }
        }
    }

    // 把数据传递给视图,就像Laravel里的return view('index', compact('productList'))
    return View(productList);
}

方式二:Entity Framework Core写法(更贴近Laravel体验)

如果还没装EF Core,先通过NuGet安装Microsoft.EntityFrameworkCore.SqlServer。

首先定义DbContext:

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    // 对应你的数据库表,就像Laravel里的模型关联表
    public DbSet<Product> Products { get; set; }
}

然后在控制器里注入DbContext,获取数据:

private readonly AppDbContext _dbContext;

// 构造函数注入DbContext
public YourController(AppDbContext dbContext)
{
    _dbContext = dbContext;
}

public IActionResult Index()
{
    // 这一步就像Laravel里的Product::all()
    var productList = _dbContext.Products.ToList();
    return View(productList);
}
第二步:在视图中遍历数据

ASP.NET的Razor视图遍历数据的语法和Laravel Blade很像,只是细节稍有不同:

假设你的视图是Index.cshtml,先在顶部指定视图接收的模型类型,然后用@foreach循环遍历:

@model List<你的命名空间.Product> <!-- 替换成你实际的模型命名空间,比如App.Models.Product -->

<h1>产品列表</h1>

<table border="1">
    <thead>
        <tr>
            <th>ID</th>
            <th>名称</th>
            <th>价格</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var product in Model)
        {
            <tr>
                <td>@product.Id</td>
                <td>@product.Name</td>
                <td>@product.Price</td>
            </tr>
        }
    </tbody>
</table>
和Laravel的核心对比
  • Laravel里你返回模型集合到视图,ASP.NET是返回强类型集合(比如List<Product>),然后用@model指定类型。
  • 遍历语法:Laravel用@foreach($items as $item),ASP.NET用@foreach(var item in Model)。
  • 属性访问:Laravel是$item->name,ASP.NET是@item.Name(注意C#用 PascalCase 命名规范)。

这样你就能在视图里正常遍历SQL Server的数据啦,不管是ASP.NET MVC还是Razor Pages,核心逻辑都是把数据从控制器传递到视图,再循环渲染。

内容的提问来源于stack exchange,提问作者Elliot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:51:03