我剛開始學習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