【发布时间】:2013-02-26 11:11:53
【问题描述】:
我刚开始学习 MVC3。已经在传统的 ASP.NET 中编码有一段时间了,现在想转向 MVC。
一些我不明白的东西(可能只是在传统 ASP.NET 中的使用方式不同)
我正在尝试编写一个简单的新闻模块来显示新闻并允许为它们插入评论。
所以第一步是,我在我的 SQL 服务器上创建了一个表: TblNews TblCategories Tbl评论
在 Models 文件夹中创建 Linq2SQL 数据类并将其命名为 News.dbml 在其中创建了 Controller HomeController.cs 和一个名为 Index() 的方法。 看起来像这样:
public ActionResult Index()
{
Models.NewsDataContext db = new Models.NewsDataContext();
var Model = (from n in db.TblNews
select new
{
ID = n.ID,
Title = n.Title,
Description = n.Description,
Category = n.TblCategory.CategoryName
});
return View(Model);
}
如您所见,我正在尝试选择所有新闻及其类别名称(TblNews 和 TblCategories 之间确实有关系)
之后,我将返回从查询中获得的数据。
在我拥有的视图中:
@{
ViewBag.Title = "News Index Page";
}
<table>
@foreach (var item in Model)
{
<tr>
<td>
ID: @item.ID<br />
Title: @item.Title<br />
Description: @item.Description<br />
Category: @item.Category
</td>
</tr>
}
</table>
应该返回如下内容:
ID: 4
Title: asd
Description: asd
Category: 2
这是我从表格中获取的示例数据。
当我运行页面时,它给了我错误消息:
'object' does not contain a definition for 'ID'
但是当我将鼠标放在“item”变量上时,它实际上包含:
{ ID = 4, Title = asd, Description = asd, Category = Test2 }
我还尝试通过在末尾添加 .ToList() 将 Linq Query 作为列表返回。
任何人都可以给我任何提示并让我进入正确的方向吗?
对不起,如果我解释有误。英语不是我的主要语言。 请询问您是否需要更多信息。
非常感谢。
附:我正在使用 Visual Studio 2012
【问题讨论】:
标签: c# asp.net-mvc-3 linq linq-to-sql razor