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的表格。
现有代码核心问题
- 控制器逻辑错误:
LoyaltyQuery方法直接实例化tLoyalty模型类,而非使用EF的DbContext连接数据库,因此获取的是LoyaltyID的默认值0,且返回Content导致页面仅显示文本而非表格。 - 视图语法错误:循环遍历模型时缺少
<tr>标签,且未正确输出模型的LoyaltyID属性,而是写死了字符串loyaltyinfo.tLoyalty。 - 缺少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
相关产品推荐
相关产品推荐

