我正在通過http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx上的ASP.NET MVC文章。 (注:有些在這篇文章的結構在MVC 1個RTM就被拋棄了,所以我改變相應的代碼也許這就是我的問題。)ASP.NET MVC查看拋出CS1061錯誤與作爲ViewDdata傳遞給視圖的模型對象的類型相關
在我的LINQ to SQL的.dbml(在MYDB .designer的.cs)Category類(生成的編譯器)被定義如下:
以我控制器I類定義一個類別的操作方法如下:
public ActionResult Categories() // /Products/Categories/ maps here
{
List<Category> categories = northwind.GetCategories();
return View("Categories", categories);
}
我然後創建一個Categories.aspx其強類型爲「MVC_ Basics_1.Models.Category「將
<%@ ... Inherits="System.Web.Mvc.ViewPage<MVC_Basics_1.Models.Category>" %>
行放在文件的頂部。
最後,在.aspx我:
<% foreach (var category in ViewData) { %>
<li>
<%= Html.ActionLink(category.CategoryName, new { action="List", category=category.CategoryName }) %>
</li>
<% } %>
兩個問題:
首先,當我瀏覽到/產品/分類/我的錯誤:
編譯器錯誤消息: CS1061:'System.Collections.Generic.KeyValuePair'不包含'CategoryName'的定義,並且沒有接受類型'System.Collections.Generic.KeyValuePair'的第一個參數的擴展方法'CategoryName'可能是fou nd(您是否缺少使用指令或程序集引用?)
並且類別視圖數據對象不能識別Category類的任何屬性。
我錯過了什麼?其次,控制器的Category()操作方法返回一個類別列表(鍵入爲「List categories」)作爲視圖的viewdata,但視圖的ActionLink輔助方法引用「category.CategoryName」。這對我來說沒有任何意義,因爲我傳遞的是類別實例(而不是類別)作爲類型。由於控制器的操作方法正在返回一個列表,這不表示該視圖需要輸入類別?
UPDATE:
我在的問題,在我的方法來實現這一個缺陷。我更關注錯誤,並將我的結果與我閱讀的文章比較,而不是我實際的目標 - 有點像沒有通過樹木看到森林。當我想到我實際上想要完成的事情 - 將模型數據傳遞給視圖時 - 我停止了有關語法錯誤的事情,並開始考慮(a)我想要在控制器中創建的特定對象,以及(b) (s)我想傳遞給視圖的數據。一旦我通過樹木看到森林,答案就變得很明顯。 @Ufuk和@ryk幫助我認識到了這一點。
@Ryk - 這在計算似乎離 - 我有22個問題,只有3沒有接受的答案。 – Howiecamp 2010-08-09 04:35:52
@ryk - 我理解檢查vs投票。查看我的評論和個人資料。只有3或4個不被接受。 – Howiecamp 2010-08-09 05:38:08
@ryk - 我意識到我的問題存在缺陷。我正在更新它,請檢查出來。謝謝。 – Howiecamp 2010-08-12 14:21:22