http://weblogs.asp.net/stephenwalther/archive/2008/06/19/asp-net-mvc-tip-5-create-shared-views.aspx

摘要:在这个Tip中,Stephen Walther介绍了如何为控制器action创建共享视图。共享视图可以用于多个控制器。本文Stephen Walther介绍的是如何为显示和编辑数据库数据来创建共享视图。

假设HomeController控制器暴露了一个名为Index()的action。当调用Index() action时,ASP.NET MVC框架会尝试获取从下面的路径处获取Index视图:

\Views\Home\Index.aspx

如果Home文件夹中没有Index.aspx视图,ASP.NET MVC框架会再次尝试从Shared文件夹获取视图:

\Views\Shared\Index.aspx

如果两个地方都找不到Index.aspx视图,就会显示图1所示的错误消息。



因此,当无法从Views子目录中获取视图时,ASP.NET MVC框架总是会从Shared文件夹中获取视图。这意味着你可以为action方法建立默认视图,并能在多个控制器之间共享。

http://www.cnblogs.com/AndersLiu/archive/2008/07/08/asp-net-mvc-tip-4-create-a-custom-data-controller-base-class.html。

我为今天这个Tip修改了DataController类,使得控制器action可以向视图返回一个LINQ to SQL DataContext。例如,修改后的DataController.Index()方法如下:

1End Function

在呈现数据表格时,我们需要同时知道DataContext和Table。

位于Views\Shared文件夹中的Index.aspx视图,包含清单1所示的代码。

清单1 - Views\Shared\Index.aspx

>

清单1中的Index.aspx视图简单调用了一个在后台代码中声明的RenderDataTable()方法。在Index.aspx.vb中——Index.aspx的后台代码里——包含了如清单2所示的代码。

清单2 - Views\Shared\Index.aspx.vb

 1

RenderDataTable()方法生成了一个HTML表格,其中包含了DataTable属性中的所有列和所有行。DataTable是DataController.Index()控制器传递给Index.aspx视图的。

当请求Index.aspx视图时,你可以得到如图2所示的页面。



注意在每条记录前面都有View、Edit和Delete链接。单击这些链接可以执行对应的操作。注意除此之外,页面底部还有一个Add Record链接。单击这个连接可以打开Create.aspx视图,如图3。



Create.aspx视图生成的表单并不漂亮,也不支持验证,但它能够工作。如果你输入一个新的电影信息,你可以将其提交到数据库。

Create表单是由清单3所示的代码生成的。

清单3 - Views\Shared\Create.aspx.vb

 1End Namespace

清单3中的代码使用DataContext和Table自动生成了表单。上述两个对象都是由DataController.Create()方法传递过来的。

该Tip的目的是给你一些灵感,告诉你可以用共享视图做些什么。在这个Tip中,我们看到了如何使用共享视图来为数据库中的数据自动生成显示、编辑和插入表单。你可以按照类似的方法为其他类型的控制器action创建共享视图(例如,标准的购物车视图)。

此处下载源代码:http://weblogs.asp.net/blogs/stephenwalther/Downloads/Tip5/Tip5.zip

-----

广告:欢迎光临[.NET正则表达式](http://regex-lib.net/)。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-10
  • 2021-09-24
  • 2022-01-18
  • 2022-02-20
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-18
  • 2022-01-07
  • 2021-10-15
  • 2022-03-02
相关资源
相似解决方案