我正在通过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