我刚开始学习MVC3。已经在传统的ASP.NET编码一段时间了,现在想转移到MVC。MVC3剃刀视图引擎
有些事情,我不知道(可能只是被用于不同的则在传统的ASP.NET)
我试图写一个简单的新闻模块,将显示消息,并允许插入注释为他们。
所以第一步就是,我创建了SQL服务器上的一个表: TblNews TblCategories TblComments
在模型文件夹中创建LINQ2SQL数据类,并将其命名News.dbml 创建控制器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'
但是当我关注我的鼠标“项”变量,它实际上包含:
{ ID = 4, Title = asd, Description = asd, Category = Test2 }
我也试图返回的LINQ通过将.ToList()添加到列表的末尾来查询列表。
任何人都可以给我任何提示,让我走向正确的方向吗?
对不起,如果我解释不正确的东西。英语不是我的主要语言。 请询问您是否需要更多信息。
非常感谢。
P.S.我正在使用Visual Studio 2012
@ user2110925啊,你需要在你的LINQ语句来选择进入'TblNews'类,将其改为“选择新的TblNews”(或任何该类称为),然后将您的模型更改为'列表'(或任何该类被称为) –
mattytommo
2013-02-26 11:25:47
我真的不明白这一部分关于我应该的类相当于。 o_O 我怎么找到这个? 我的表名是TblNews,但我并不真正了解这个课程。 在传统的ASP.NET中我从来不需要使用表格的类型,我只有在我填充下拉列表或类似的东西时才使用它们。 现在我真的很困惑...... :( – 2013-02-26 11:35:56
@ user2110925我觉得你的课是'TblNews'。基本上,在你的'NewsDataContext'中,你会有一个'DbSet'是啊?这意味着你应该使用'TblNews'类。这不是特定于MVC,它是特定于使用ORM,如实体框架,linq到sql,nhibernate等。 –
mattytommo
2013-02-26 11:53:32