ASP.NET MVC3书店--第十节 为网站导航与局部设计做最后的修改

news/2024/5/14 23:11:17/文章来源:https://blog.csdn.net/zhanghuangbin/article/details/6865985
现在我们已经完成了这个网站中的主要功能。但我们还需要为整个网站的导航,首页与书籍列表页面做一点最终的修改。

10.1  创建购物摘要分部视图

    首先,我们想要在整个网站中显示用户购物车中的书籍数量,如图10-1所示。

ASP.NET <wbr>MVC3书店--第十节 <wbr>为网站导航与局部设计做最后的修改

图10-1 在整个网站中显示用户购物车中的书籍数量

    通过创建一个分部视图,然后在网站公用视图模板中使用这个分部视图,我们可以很容易地实现这个处理。

在购物车控制器(ShoppingCartController.cs)中使用一返回分部视图的CartSummary方法,代码如下所示。

//
// GET: /ShoppingCart/CartSummary
[ChildActionOnly]
public ActionResult CartSummary()
{
var cart = ShoppingCart.GetCart(this.HttpContext);
ViewData["CartCount"] = cart.GetCount();
return PartialView("CartSummary");
}

    鼠标右击Views文件夹下的ShoppingCart文件夹,点击“添加视图”菜单项,将视图命名为“CartSummary”,选取“创建分部视图”复选框,如图10-2所示。

ASP.NET <wbr>MVC3书店--第十节 <wbr>为网站导航与局部设计做最后的修改

图10-2 添加购物摘要视图

    购物摘要视图非常简单,只显示一个到购物车视图的链接,链接文字为购物车中书籍的数量。完整的购物摘要视图(CartSummary.cshtml)文件中的代码如代码清单10-1所示。

    代码清单10-1 完整的购物摘要视图文件中的代码

@Html.ActionLink("书籍数量:
(" + ViewData["CartCount"] + ")",
"Index",
"ShoppingCart",
new { id = "cart-status" })

    通过使用Html.RenderAction帮助器方法,我们可以在网站的任何视图中都嵌入一个分部视图,包括整个网站的公用视图模板中。Html.RenderAction帮助器方法中需要指定一个action方法的名字(本例中为CartSummary)与控制器的名字(本例中为ShoppingCart),代码如下所示。
@Html.RenderAction("CartSummary", "ShoppingCart")

    在将这个分部视图添加到整个网站布局之前,我们还需要创建一个书籍种类菜单,以避免对整个网站的公用视图模板作出多次修改。

10.2  创建种类菜单分部视图

    通过追加一个如图10-3所示的种类菜单分部视图,然后在该视图菜单中列出我们网站中的所有书籍种类,可以让用户更加方便地在我们的网站中进行书籍的挑选操作。

   

ASP.NET <wbr>MVC3书店--第十节 <wbr>为网站导航与局部设计做最后的修改


图10-3 种类菜单分部视图

    我们采用与创建购物摘要视图相同的步骤来创建种类菜单分部视图,然后我们在网站公用视图模板中统一添加这两个分部视图。首先,在Store控制器(StoreController.cs文件)中追加GenreMenu方法,代码如下所示。

//
// GET: /Store/GenreMenu
[ChildActionOnly]
public ActionResult GenreMenu()
{
var genres = storeDB.Genres.ToList();
return PartialView(genres);
}

       这个方法返回网站中所有书籍种类的列表,该列表将被显示在接下来我们将要创建的种类菜单分部视图中。

    请注意:我们对这个方法使用了[ChildActionOnly]属性,概述性表示这个方法只被使用在分部视图中。这个属性确保不被直接通过访问“/Store/GenreMenu”的方式来调用。对于分部视图来说,该属性是可选的,但是当我们想确保某个方法只被分部视图所调用时,该属性是被建议使用的。当我们想要返回一个分部视图,而不是一个主视图时,该属性可以通知视图引擎不应该对这个视图使用任何布局,因为它是被嵌套在其他视图中的。

在GenreMenu方法中点击鼠标右键,使用Genre(书籍种类)模型类创建一个强类型的,名为GenreMenu的分部视图,如图10-4所示。

ASP.NET <wbr>MVC3书店--第十节 <wbr>为网站导航与局部设计做最后的修改

图10-4 创建种类菜单分部视图

    修改种类菜单分部视图中的代码,将所有书籍种类显示在列表中。

@model IEnumerable<MvcBookStore.Models.Genre>
<ul id="categories">
@foreach (var genre in Model)
{
<li>@Html.ActionLink(genre.Name,"Browse", "Store",
new { id = genre.GenreId }, null)
</li>
}
</ul>

10.3 修改公用视图模板,显示分部视图

    我们可以通过调用Html.RenderAction()方法来在公用视图模板中添加我们的分部视图。这里我们同时添加两个分部视图,并添加一些附加的元素来显示它们,完整的公用视图模板中的代码如代码清单10-2所示。

    代码清单10-2 完整的公用视图模板中的代码

<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")"
rel="stylesheet" type="text/css" />
<script
src="@Url.Content("~/Scripts/jquery- 1.4.4.min.js")"
type="text/javascript"></script>
</head>
<body>
<div id="header">
<h1><a href="/">ASP.NET MVC书店</a></h1>
<ul id="navlist">
<li class="first">
<a href="@Url.Content("~")" id="current">
首页
</a>
</li>
<li>
<a href="@Url.Content("~/Store/")">
tml.RenderAction()ler.cs)挑选书籍
</a>
</li>
<li>
@{Html.RenderAction("CartSummary","ShoppingCart");}
</li>
<li>
<a href="@Url.Content("~/StoreManager/")">
管理
</a>
</li>
</ul>       
</div>
<div>
@{Html.RenderAction("GenreMenu","Store");}
</div>
<div id="main">
@RenderBody()
</div>
<div id="footer">
使用<a href="http://asp.net/mvc">ASP.NET MVC 3</a>开发
</div>
</body>
</html>

    现在运行应用程序,我们可以在左边看见种类菜单导航条,在网页顶部看见购物摘要信息。

10.4 本教程总结

通过本教程,我们了解到使用ASP.NET MVC3,可以简化一个具有数据库访问功能、用户身份认证功能、AJAX功能等等的综合网站或Web应用程序的开发工作。希望通过本教程,你已经掌握了开发一个ASP.NET MVC网站或Web应用程序的基础工具。

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

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

相关文章

常用的软件、网站

前言 整理一下可能常常会使用的软件和服务平台&#xff0c;顺序不分先后 1.编辑类软件 MacDown&#xff1a;要写简历了&#xff0c;要用了&#xff0c;哈哈&#xff0c;平时上传到github的内容也可以现在MacDown上写好&#xff0c;再粘贴到github上传印象笔记&#xff1a;平时记…

夺命雷公狗ThinkPHP项目之----企业网站12之文章添加的实现

我们现在就开始写文章添加了&#xff0c;居然是添加当然布列外&#xff0c;我们还是要先讲模版搞定再说被&#xff1a; <!doctype html> <html> <head><meta charset"UTF-8"><title>后台管理</title><link rel"styleshe…

大电商网站导航用户体验对比

最近挺感兴趣研究电子商务网站的导航&#xff0c;特地找6个网站做横向对比四个综合性大站 http://www.360buy.com/ http://dangdang.com/ http://www.suning.cn/ http://shop.qq.com/ 两个垂直电商站点 http://www.letao.com/ http://www.mbaobao.com/ 先上截图&#xff1a; 京…

【Docker学习总结】7.Docker在容器中部署静态网站

上一篇我们介绍了Docker守护式容器的启动方式&#xff0c;本篇我们来学习如何在Docker容器中部署静态网站。 这里我们将在Docker容器中使用Nginx搭建一个静态网站&#xff0c;通过这个部署&#xff0c;让大家对在前几节中学到的Docker容器知识&#xff0c;有进一步的熟悉和理解…

中文网php怎样盈利维持,如何保持网站稳定的排名?

1、保持网站排名稳定&#xff0c;需要高权重的相关外链想要网站排名长期稳定靠前&#xff0c;外链是重中之重&#xff0c;seo就是这么简单&#xff0c;成&#xff0c;外链&#xff1b;败&#xff0c;外链。所以&#xff0c;要想稳定住排名&#xff0c;网站必须拥有强大的高权重…

linux php搭建网站,linux 搭建php网站许愿墙(示例代码)

首先需要搭建本地yum源&#xff0c;详情参考&#xff1a;我使用Centos 7 做网站服务器&#xff0c;Centos 5 存放数据先配置centos 7配置IPvi /etc/sysconfig/network-scripts/ifcfg-eno16777736 #编辑网卡配置文件&#xff0c;eno16777736为网卡名字我Centos 7设置的I…

Linux运维学习网站收藏

Linux运维之道 1> http://www.linuxidc.com/ //Linux公社&#xff0c;收藏Linux学习的很多知识 2> http://http://www.jb51.net/ //脚本之家&#xff0c;许多脚本基本知识网站 3> http://www.runoob.com/ //记录IT、运维各个方面的一些基础笔记 4> h…

网站会员扫码充值系统

一、简介 微信会员充值系统&#xff0c;适合游戏及第三方平台充值。 二、主要功能 1. 会员支付&#xff1a;填写会员名及金额后&#xff0c;弹出二维码&#xff0c;会员扫码后充值。 2. 支付查询&#xff1a;输入订单号&#xff0c;可以查询订单金额。 3. 接口充值&#xff1a;…

美国购物网站排名

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;http://www.cnblogs.com/zijinguang/archive…

www packtpub com电子书网站

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;www.packtpub.com支持信用卡支付&#xff0c…

一步步构建大型网站架构

一步步构建大型网站架构 原创 2016-04-17 itivy 架构师联盟之前我简单向大家介绍了各个知名大型网站的架构&#xff0c;MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构…

10个高质量PPT模板下载网站

1.PPTSTORE http://www.pptstore.net/ 中国顶级原创PPT模板和KEYNOTE模板下载的高端平台-PPTSTORE 设计师在这里可以发布自己的作品&#xff0c;用户也可以付费下载。里边免费板块的PPT模板质量也还是非常高的&#xff0c;但需要个人花点心思筛选自己要的模板。 2.officePLUS h…

我是如何对网站CSS进行架构的 转自张鑫旭

一、写在前面的 都是自己积累形成的一些东西&#xff0c;可能带有明显的个人印记。不是专业内容&#xff0c;不是权威指南&#xff0c;只是展示一点自己的观点&#xff0c;借此希望能与各位优秀的同行交流看法&#xff0c;见解。以得到进步与提高。 二、我所知的一些过往的做法…

Requests电商网站爬虫+SQLAlchemy框架数据入库

知识点&#xff1a; 1、SQLAqlalchemy框架的使用&#xff0c;数据库连接&#xff0c;建立表格&#xff0c;数据入库Mysqll等操作。 2、解决重复入库问题 3、图片元素变动的反爬应对 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative…

Scrapy+Mysql+SqlAlchemy爬取招聘网站信息

爬虫目的&#xff1a; 爬取拉勾网站杭州分站的python岗位基本信息和岗位详情&#xff0c;并写入mysql数据库。后附经验总结。 知识点&#xff0c; 1、解析函数多个yield以及多个pipeline的使用 2、Sqlalchemy框架的使用 3、Scrapy FormRequest请求&#xff0c;以及反爬 难点…

Python爬取招聘网站岗位信息

本代码主要实现从招聘网站爬取所有招聘某个特定岗位的公司信息&#xff0c;如公司名&#xff0c;岗位&#xff0c;公司规模&#xff0c;招聘详情页信息&#xff0c;并写入csv文件。难点是获取请求的url地址和参数。 在智联主页搜索销售岗位&#xff0c;Chrome浏览器打开网页&a…

OneinStack定时同步备份数据库/网站至七牛云存储方法

无论我们用WEB面板&#xff0c;还是用一键脚本安装环境建站&#xff0c;只要一旦我们开始用VPS、服务器&#xff0c;最为关键的就是服务器中的数据。因为大部分VPS、服务器商家都是无管理型主机&#xff0c;任何的安装和维护都需要我们自行管理。即便商家因自身问题导致服务器故…

Bugku:web 程序员本地网站

这道题一开始就是本地的提示&#xff0c;感觉似曾相识呢&#xff1f;&#xff1f;&#xff1f; 我真的觉得好像做过这种题目&#xff0c;还是打开看看 好的哟 啥也没有也是意料之中哦~ 打开BurpSuite抓包吧 不出所料还是放入Repeater中&#xff0c; 添加一行X-Forwarded-For&am…

校园表白墙php源码,校园表白墙网站PHP源码

Nginxrewrite ^/mous/page/(.*)$ /index.php?mous&page1;rewrite/mous/(.∗)/page/(.∗)1;rewrite/mous/(.∗)/page/(.∗) /index.php?mous$1&page2;rewrite/mous/(.∗)2;rewrite/mous/(.∗) /index.php?mousKaTeX parse error: Expected ‘EOF’, got ‘&’ at…

如何看网站的服务器大小写,网站页面的大小写

网站页面的大小写 内容精选换一换云速建站不支持自适应宽度&#xff0c;推荐使用网站宽度为1200px&#xff0c;设置方法请参考网站基础设置。将空白处下方的模块或页脚整体上移&#xff0c;遮盖住空白处&#xff0c;然后保存修改。云速建站没有固定长度&#xff0c;网页的长度取…