使用ASP.NET MVC框架创建电子商务网站

news/2024/5/9 23:10:30/文章来源:https://blog.csdn.net/jackljf/article/details/5761015
  • 此篇通过创建一个电子商务网站,讨论ASP.NET MVC框架下控制器是如何与视图做交互的。
  •  

    这个系列的第一篇建造了一个简单的电子商务产品列表/浏览网站。它讨论了MVC后面的高层次的概念,示范了如何从头创建一个新的asp.net mvc项目,实现和测试这个电子商务产品列表功能。系列的第二篇对asp.net mvc框架的URL路径选择(routing)架构做了深入探讨,讨论了它的工作原理以及你如何使用它来处理更高级的URL路径选择场景。

    此篇,将讨论控制器是如何与视图做交互的,具体来说,我将讨论你可以把数据从控制器传到视图以显示返回到客户端的回复的各种方式。

    第一部分的扼要简述

    在这个系列的第一部分,我们创建了一个电子商务网站,实现了基本的产品列表/浏览支持。我们是用asp.net mvc框架实现这个网站的,这个方法会很自然地将代码结构化为独特的控制器,模型和视图组件。

    当浏览器向我们的网站发送一个HTTP请求时,asp.net mvc框架将使用它的URL路径选择引擎,把进来的请求映射到一个控制器上的action方法来处理它。在基于MVC的应用中的控制器负责处理进来的请求,处理用户输入和交互,执行基于这些输入和交互的应用逻辑(获取或更新存储在数据库中的模型数据等等)。

    到生成返回到客户端的HTML回复的时候,控制器一般是与“视图”组件合作,这些视图组件是以独立于控制器的单独的类或模板的形式实现的,其目的是完全注重于封装显示逻辑。

    控制器,模型和视图组件 

    视图不应该含有任何应用逻辑或数据库访问代码,所有的应用/数据逻辑应该由控制器类来处理。这么划分的动机是帮助强制你的应用/数据逻辑与界面生成代码间的清晰分离。同时这也方便你独立于你的界面显示逻辑来单元测试你的应用/数据逻辑。

    视图应该只使用从控制器传过来的特定于视图的数据来生成输出。在asp.net mvc框架中,我们称这个特定于视图的数据为“ViewData”。这个博客的其他部分将讨论你可以用来将ViewData从控制器传递给视图来生成显示的一些不同方法。

    一个简单的产品列表场景

    为帮助说明我们可以用来把ViewData从控制器传递给视图的一些技术,让我们来建造一个简单的产品列表网页:

    一个简单的产品列表网页 

    我们将用一个CategoryID整数来过滤我们想要显示在页面上的产品。注意上面我们是如何把CategoryID嵌在URL中的(例如,Products/Category/2 或 /Products/Category/4 )。

    然后,我们的产品列表网页显示了2个不同的动态内容元素。第一个元素是我们要显示的分类的文本名称(例如,Condiments-调味品),第二个元素是一个HTML < ul>< li/>< /ul> 产品名字列表。我在上面的屏幕截图中对这2个元素用红笔画了圈。

    在下面,我们将看一下我们可以使用的2个不同的方法来实现ProductsController类,这个类处理进来的请求,获取处理请求所需的数据,然后将这个数据传给一个List视图来显示。我们要研究的第一个方法是用后期绑定的字典对象传递这个数据,第二个方法则使用强类型类的方式来传递这个数据。

    方法 1:使用 Controller.ViewData 字典来传递ViewData

    Controller基类有个ViewData字典属性,可以用来填充你要传给视图的数据。你使用键/值模式将对象加入 ViewData 字典。

    下面是个ProductsController类,其中的Category action方法实现了我们上面的产品列表场景。注意,它是如何使用分类的ID参数来查询该分类的文本名称,以及获取该分类中的产品列表的。它使用“CategoryName”和“Products”两个键将这两个数据存储在Controller.ViewData 集合中:

    它使用“CategoryName”和“Products”两个键将这两个数据存储在Controller.ViewData 集合中 

    然后,我们上面的Category action方法调用 RenderView("List") 来表示它要用哪个模板来做显示。当你象这样调用RenderView时,它会将ViewData字典传给视图,以显示对应的回复。

    实现我们的视图

    我们将使用居于我们项目的/Views/Products目录下的List.aspx文件来实现我们的List视图。这个 List.aspx 将继承 /Views/Shared 文件夹中的Site.Master母版页中的布局(在你创建一个新的视图网页时,你可以在 VS 2008 中,右击,选择添加新项->MVC视图内容网页来接连一个母版页):

    这个 List.aspx 将继承 /Views/Shared 文件夹中的Site.Master母版页中的布局 

    当我们使用MVC视图内容网页模板来创建List.aspx网页时,它不是从通常的 System.Web.UI.Page 类继承而来,而是从System.Web.Mvc.ViewPage 基类继承而来(是现有的Page类的一个子类):

    当我们使用MVC视图内容网页模板来创建List.aspx网页时,它不是从通常的 System.Web.UI.Page 类继承而来,而是从System.Web.Mvc.ViewPage 基类继承而来 

    ViewPage基类提供一个ViewData字典属性,我们可以在视图网页里访问由控制器添加的数据对象。然后我们可以取出这些数据对象,使用它们来显示HTML输出,可以用服务器控件的方式,或者用 < %= %> 显示代码的方式。

    使用服务器控件来实现我们的视图

    下面是一个如何使用现有的< asp:literal> 和 < asp:repeater>服务器控件来实现我们的HTML界面的例子:

    如何使用现有的< asp:literal> 和 < asp:repeater>服务器控件来实现我们的HTML界面 

    我们可以用下面的后台代码类将 ViewData 绑定到这些控件之上(注意我们是如何使用ViewPage的ViewData字典来实现的 ):

    用下面的后台代码类将 ViewData 绑定到这些控件之上 

    注: 因为页面上没有 < form runat="server">,是不会输出 view-state 的。上面的控件也不会自动生成任何ID值,这意味着你对输出的HTML有完全的控制。

    使用 < %= %> 代码来实现我们的视图

    如果你更喜欢使用行内代码来生成输出的话,你可使用下面的 List.aspx 来实现跟上面完全一样的结果:

    用下面的 List.aspx 来实现跟上面完全一样的结果 

    注: 因为ViewData的类型是含有“objects”的字典,为了对它使用foreach语句,我们需要将ViewData["Products"]的类型转换成 List< Product> 或者 IEnumerable< Product>。我在页面上引用了System.Collections.Generic 和 MyStore.Models 命名空间 以避免输入 List< T> 和 Product 类型的完整名称。

    注: 上面使用了“var”关键词,这是VS 2008中新的 C# 和 VB “类型推断”特性的一个例子(在这里阅读我以前的相关贴子)。因为我们将ViewData["Products"] 转换成了 List< Product>,我们在 List.aspx 文件中的 prduct 变量上得到了完整的intellisense:

    我们在 List.aspx 文件中的 prduct 变量上得到了完整的intellisense 

    这样就使用ASP.NET MVC框架实现了一个电子商务网站。

     

     

     

    转自:http://developer.51cto.com/art/200907/138902.htm

     

     

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_746709.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在SharePoint网站中访问Webservice被拒绝的解决方法

在SharePoint网站中访问Webservice时可能会遇到如下的问题&#xff1a; 原因是SharePoint默认已经禁止对后缀为asmx的文件进行访问&#xff0c;所以回出现如上的问题&#xff0c;解决方法很简单&#xff0c;打开SharePoint管理中心&#xff0c;选择操作标签下面的被禁止的文件类…

[导入]使用Sharepoint Services 3.0构建基本网站

http://www.cnblogs.com/aspnetx/archive/2007/10/16/926348.html摘要:写此篇希望借助图片让更多的朋友熟悉Sharepoint应该怎么用.网络上的资料很多,但大多是教科书式的讲解,很是枯燥,写此篇作为一个补充.一共48张图,但是很快就能看完.本文侧重描述如何使用Sharepoint构建基本网…

视频网站大杂烩--HTML+CSS练手项目1【Frameset】

【本文为原创&#xff0c;转载请注明出处】 技术【CSSHTML】 布局【Frameset】 ------------------------------------------------------------------------------------------------------------ 步骤1 Frameset 布局 <!DOCTYPE html> <html lang"en"&…

ASP.NET界面设计(二)之使用母版页《ASP.NET2.0网站开发全程解析》

ASP.NET 2.0引入了一个新的功能&#xff0c;称为模板页面(Master Page)&#xff0c;利用这一功能可以为每个页面定义能共享的通用区域&#xff0c;像页头、页脚、菜单等。模板页面能够把通用的布局代码放到一个单独的文件中&#xff0c;然后使其他内 容页面在外观上继承于它。一…

UI应遵循的三大网站设计原则

转&#xff1a;http://www.csdn.net/article/2012-08-10/2808473 摘要&#xff1a;触摸优先设计、响应式设计、移动优先设计是UI设计师设计网站应遵循的三大原则&#xff0c;以使网站最大范围地适应各种设备。 触摸优先设计、响应式设计、移动优先设计是UI设计师设计网站应遵循…

构建ASP.NET网站十大必备工具

转&#xff1a;http://www.cnblogs.com/xuefeng1982/archive/2011/01/27/1946209.html 最近使用ASP.NET为公司构建了一个简单的公共网站&#xff08;该网站的地址&#xff1a;http://superexpert.com/&#xff09;。在这个过程中&#xff0c;我们使用了数量很多的免费工具&…

winform中linklabel打开指定网站

周末在家&#xff0c;正好有空写了个小程序&#xff0c;方便转换2进制、8进制和16进制&#xff0c;其中用了个linklabel控件&#xff0c;用来打开我自己的博客&#xff0c;想不到居然看书也没找到怎么才能用这个控件打开网页。按理说linklabel控件本身就是超链接&#xff0c;理…

毕业设计网站截图

注&#xff1a;网站标志是用Flash做的&#xff0c;网站首页那个粉红的圈是用代码实现的&#xff0c;可以绕圈的。 网站首页&#xff1a; 网站主页&#xff1a; 网站知识&#xff1a; 用户注册&#xff1a; 客户留言板 主要的就这么多了&#xff0c;其他的是些案例介绍的页面。 …

网站如何集成支付宝!原来要给钱的

转&#xff1a;http://gavin-chen.iteye.com/blog/257864 刚在Javaeye看到一篇文章&#xff0c;关于网站集成支付宝的&#xff0c;正是我之前想了解的&#xff0c;不过作者写得有些零乱&#xff0c;解释也不太清楚&#xff0c;代码格式更是看着郁闷&#xff0c;待以后有空消化…

分享25佳 iPad 应用程序的网站设计案例

苹果的东西太招人喜欢了&#xff0c;iPad 2在国内还未上市&#xff0c;江湖传闻有中国“黄牛”提编织袋在美国抢购 iPad 2&#xff0c;不知是真是假。不过我们今天不讨论这个&#xff0c;我们说点别的&#xff0c;有的人称iPad为平板电脑&#xff0c;有的人说不对&#xff0c;应…

为SharePoint网站创建自定义导航菜单

转&#xff1a;http://kaneboy.blog.51cto.com/1308893/397779 相信不少人都希望把SharePoint网站内置的那个顶部导航菜单&#xff0c;换成自己希望的样式。由于SharePoint 2007/2010的网站导航基本上基于标准的ASP.NET SiteMap模型&#xff0c;所以只要你对ASP.NET SiteMap有…

Sharepoint网站创建自定义导航全记录

转&#xff1a;http://tech.it168.com/a2009/1207/820/000000820524_all.shtml 【IT168 技术文档】在一个Sharepoint网站中可以创建子网站&#xff0c;页面&#xff0c;文档库等等&#xff0c;下面我们详细介绍创建页面导航和下拉菜单的过程。 1.要激活一个发布功能的Feature。…

在SharePoint 2010中创建网站的权限级别

转&#xff1a;http://www.360sps.com/Item/CreatePermissionLevels.aspx 权限级别是SharePoint 2010新增加的功能&#xff0c;使我们对权限的设置又提高了一个层次。SharePoint 2010的权限级别指的是可分配给用户或用户组的单个权限组。SharePoint 2010自带的权限级别有&…

深度学习相关网站链接与参考资料

http://deeplearning.stanford.edu/wiki/index.php/神经网络 https://arxiv.org/list/cs.AI/recent https://www.52ml.net/18635.html http://neuralnetworksanddeeplearning.com/ https://github.com/tigerneil/neural-networks-and-deep-learning-zh-cn http://www.hank…

21个为您的网站和博客提供的免费视频播放器

很多设计师在都会在他们的网站使用视频播放器。在线视频播放器无需为简单的用户和Web开发人员提供过多的介绍&#xff0c;它简单易用&#xff0c;为您建站时提供了灵活性和创造性&#xff0c;您可以添加无限数量的视频&#xff0c;并根据你的想法安排它们的专辑标题、艺术家的名…

网站重构之配置文件分解

转&#xff1a;http://www.cnblogs.com/ASPNET2008/archive/2010/05/04/1727538.html 最近赶上公司重构网站,架构组的同事为提高web部门的开发效率,总结出了一些不错的经验&#xff0c;本人也是直接受益者&#xff0c;为此用下面几篇文章来与大家分享。 这一篇&#xff0c;我想…

优秀网页设计:别出心裁的创意网站导航菜单

导航菜单是网站重要的组成部分&#xff0c;关系着网站的可用性和用户体验。一个有吸引力的导航能够吸引用户去浏览更多的网站内容&#xff0c;增加用户在网站的停留时间。为了让导航能够和网页内容完美的融合在一起&#xff0c;设计前需要设仔细分析网页结构。下面收集了30佳别…

互联网网站的反爬虫策略浅析

因为搜索引擎的流行&#xff0c;网络爬虫已经成了很普及网络技术&#xff0c;除了专门做搜索的Google&#xff0c;Yahoo&#xff0c;微软&#xff0c;百度以外&#xff0c;几乎每个大型门户网站都有自己的搜索引擎&#xff0c;大大小小叫得出来名字得就几十种&#xff0c;还有各…

这是一个神奇(神器)的网站

只要想不到&#xff0c;没有g友做不到 PaperWriting网站地址