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

IIS返回"0"而非HTML视图问题(ASP.NET MVC)

问题解决:ASP.NET MVC展示SSMS数据库tLoyalty表LoyaltyID数据异常

问题现状

在IIS运行ASP.NET MVC程序时,尝试在HTML表格展示SSMS中tLoyalty表的LoyaltyID列数据,但页面仅返回"0"且未崩溃,目标是通过ADO.NET Entity Data Model实现每行显示LoyaltyID的表格。

现有代码核心问题

  1. 控制器逻辑错误:LoyaltyQuery方法直接实例化tLoyalty模型类,而非使用EF的DbContext连接数据库,因此获取的是LoyaltyID的默认值0,且返回Content导致页面仅显示文本而非表格。
  2. 视图语法错误:循环遍历模型时缺少<tr>标签,且未正确输出模型的LoyaltyID属性,而是写死了字符串loyaltyinfo.tLoyalty。
  3. 缺少EF上下文:未创建连接数据库的DbContext类,无法从SSMS获取真实数据。

修正步骤与代码实现

1. 创建ADO.NET Entity Data Model的DbContext类

右键项目→添加→新建项→数据→ADO.NET Entity Data Model,选择"来自数据库的EF设计器",连接到你的SSMS数据库并选择tLoyalty表,生成后的上下文类大致如下:

using System.Data.Entity;

namespace Web3.Models
{
    public partial class LoyaltyDbContext : DbContext
    {
        public LoyaltyDbContext() : base("name=LoyaltyDbContext")
        {
        }

        public virtual DbSet<tLoyalty> tLoyalty { get; set; }
    }
}

2. 修正控制器代码

修改LoyaltyController,在对应Action中通过DbContext查询数据库数据并传递给视图:

using System.Linq;
using System.Web.Mvc;
using Web3.Models;

namespace Web3.Controllers
{
    public class LoyaltyController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult LoyaltyInfo()
        {
            using (var db = new LoyaltyDbContext())
            {
                var loyaltyList = db.tLoyalty.ToList();
                return View(loyaltyList);
            }
        }
    }
}

3. 修正视图代码(LoyaltyInfo.cshtml)

设置为强类型视图,正确遍历模型并渲染表格:

<div>
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>Loyalty ID</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>@item.LoyaltyID</td>
                </tr>
            }
        </tbody>
    </table>
</div>

4. 验证Web.config连接字符串

确保Web.config中存在匹配的连接字符串:

<connectionStrings>
    <add name="LoyaltyDbContext" connectionString="Data Source=你的SSMS服务器地址;Initial Catalog=你的数据库名;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

测试运行

启动IIS,访问/Loyalty/LoyaltyInfo路径,即可看到包含所有tLoyalty表LoyaltyID的表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:35:13