从错误和问题中寻找asp.net MVC ---Asp.net MVC 框架实例中的若干的不解的问题
今天兴趣突发,看了下关于ASP.NET MVC的一些blog,于是便按照Scott大牛的MVC框架第一部分例子做了一番。结果发现有很多的疑问,找了下园子里的帖子,可能是我对.NET的了解实在太浅,发现虽然帖子比较多,可是大多都没有涉及到这些刚接触MVC时出现的问题,说的不是很详细,我也就大胆的做了总结,也就这个帖子的问题请教下园子的牛人们。
首先创建一个asp.net MVC Web Application and Test 项目MyStore。
目录结构如图所示
添加一个MVC controller class叫ProductsController.cs
按照教程所说的一直完成Controller
注意:这里需要建立一个NorthwindDataContext部分类用来完成从数据库取值等操作。这里NorthwindDataContext文件名(或者说类名)必须和dbml文件里面声明的类名一致,才能得到Categories table类的引用,一开始在这里弄了很久没搞清楚为什么没办法得到Categories(即this.GetTable()方法)
接下来是单元测试
根据示例上所说建立对Detail的单元测试,可是始终没有成功。
add New test ->Unit test后,无法取得TestViewEngine这个类,以前也没使用过Unit test,VS2008中集成了对单元测试功能,可是我却找不到怎么使用这个功能。
视图阶段
显示方法1 行内方法
代码如下
首先创建一个asp.net MVC Web Application and Test 项目MyStore。
目录结构如图所示
添加一个MVC controller class叫ProductsController.cs
按照教程所说的一直完成Controller
public class ProductsController : Controller
{
NorthWindDataContext northwind = new NorthWindDataContext();
//Example Url /Products/Categories
[ControllerAction]
public void Categories()
{
//Add action logic here
List<Category> categories = northwind.GetCategories();
RenderView("Categories", categories);
}
//Example Url /Products/List/Beverages
// /Products/List/Beverages?page=2
[ControllerAction]
public void List(string Category,int? page)
{
//Add action logic here
List<Product> products = northwind.GetProductsByCategory(Category);
RenderView("ListingByCategory",products);
}
//Example Url /Products/Detail/3
[ControllerAction]
public void Detail(int id)
{
//Add action logic here
Product product = northwind.GetProductById(id);
RenderView("Detail", product);
}
}
{
NorthWindDataContext northwind = new NorthWindDataContext();
//Example Url /Products/Categories
[ControllerAction]
public void Categories()
{
//Add action logic here
List<Category> categories = northwind.GetCategories();
RenderView("Categories", categories);
}
//Example Url /Products/List/Beverages
// /Products/List/Beverages?page=2
[ControllerAction]
public void List(string Category,int? page)
{
//Add action logic here
List<Product> products = northwind.GetProductsByCategory(Category);
RenderView("ListingByCategory",products);
}
//Example Url /Products/Detail/3
[ControllerAction]
public void Detail(int id)
{
//Add action logic here
Product product = northwind.GetProductById(id);
RenderView("Detail", product);
}
}
注意:这里需要建立一个NorthwindDataContext部分类用来完成从数据库取值等操作。这里NorthwindDataContext文件名(或者说类名)必须和dbml文件里面声明的类名一致,才能得到Categories table类的引用,一开始在这里弄了很久没搞清楚为什么没办法得到Categories(即this.GetTable()方法)
接下来是单元测试
根据示例上所说建立对Detail的单元测试,可是始终没有成功。
add New test ->Unit test后,无法取得TestViewEngine这个类,以前也没使用过Unit test,VS2008中集成了对单元测试功能,可是我却找不到怎么使用这个功能。
视图阶段
显示方法1 行内方法
代码如下
<ul>
<% foreach (var category in ViewData){%>
<li>
<%=Html.ActionLink(category.CategoryName,new { action="List",Category = category.CategoryName} ) %>
</li>
<% }%>
</ul>
<% foreach (var category in ViewData){%>
<li>
<%=Html.ActionLink(category.CategoryName,new { action="List",Category = category.CategoryName} ) %>
</li>
<% }%>
</ul>
结果生成li中的链接全部都是/products/List,
而使用ListView的时候根本没办法显示出来报错参数类型的错误。
做到这里以后就无法继续下去了。先发到这里,希望得到大家的帮助,随着问题的解决,将继续在错误和问题中寻找下asp.net MVC的用法并最终对asp.net MVC入门。