当前位置: 首页 > 编程日记 > 正文

Asp.net MVC 3实例学习之ExtShop(五)——产品详细页

在产品详细页需要使用到tab控件,在jquery的ui包已包含改控件,因而将相应文件链接加到母版页就可以了。

打开“ProductController”文件,在里面添加一个Details操作,代码如下:

1                public   ActionResult   Details ( int   id )
2                {
3                        var   q   =   dc . T_Products . Single ( m   = >   m . ProductID   = =   id ) ;
4                        return   View ( q ) ;
5                }
6

完成后创建对应的视图页,并完成整个页面框架,代码如下:

1@ model   Extshop . Models . T_Products
2
3@ {
4        ViewBag . Title   =   Model . Title ;
5        PageData [ " id " ]   =   Model . CategoryID ;
6}
7
8        < div   class = " nav " >
9                < a   href = " @Url.Action( " " ,   " Catalog " ) " > 产品 < / a >
10                @ { Html . RenderAction ( " Navbar " ,   " Catalog " ,   new   {   id   =   PageData [ " id " ]   } ) ; }
11                @ Html . Raw ( " >> " )
12                @ Model . Title
13        < / div > < br   / >
14        < div   id = " contentMain "   style = " width:760px; " >
15                < span   class = " header "     style = " width:750px; "   id = " producttitle " > @ Model . Title < / span >
16                < div   class = " img " >
17                < a   href = " /images/products/@Model.LargeImageUrl "   rel = " lightbox " > < img   src = " /images/products/@Model.SamllImageUrl "   alt = " @Model.Title "   width = " 170 "   height = " 190 "   / > < / a >
18                < / div >
19                < div   class = " details " >
20                        < ul >
21                        < li > 市场价格: < del > @ Model . MarketPrice . ToString ( " C " ) < / del > < / li >
22                        < li   id = ' unitprice ' > 当前价格: @ Model . UnitPrice . ToString ( " C " ) < / li >
23                        < li > < span > 用户评价: < / span >
24                                < div   class = ' rating '   id = ' rating1 ' >
25                                        < input   name = " @Model.ProductID.ToString( " Star0 " ) "   type = " radio "   class = " star "   disabled = " disabled "   value = " 1 "   @ ( Model . TotalRating   = =   1   ?   " checked='checked' "   :   " " )     / >
26                                        < input   name = " @Model.ProductID.ToString( " Star0 " ) "   type = " radio "   class = " star "   disabled = " disabled "   value = " 2 "   @ ( Model . TotalRating   = =   2   ?   " checked='checked' "   :   " " )   / >
27                                        < input   name = " @Model.ProductID.ToString( " Star0 " ) "   type = " radio "   class = " star "   disabled = " disabled "   value = " 3 "   @ ( Model . TotalRating   = =   3   ?   " checked='checked' "   :   " " )     / >
28                                        < input   name = " @Model.ProductID.ToString( " Star0 " ) "   type = " radio "   class = " star "   disabled = " disabled "   value = " 4 "   @ ( Model . TotalRating   = =   4   ?   " checked='checked' "   :   " " )     / >
29                                        < input   name = " @Model.ProductID.ToString( " Star0 " ) "   type = " radio "   class = " star "   disabled = " disabled "   value = " 5 "   @ ( Model . TotalRating   = =   5   ?   " checked='checked' "   :   " " )     / >                                                                        
30                                < / div >
31                        < / li >
32                        < li > 制造厂商: @ Model . Manufacturers < / li >
33                        < li > 产品型号: @ Model . Model < / li >
34                        < li > 库存情况: @ ( Model . Stock > 0   ?     @ Html . Raw ( "   color='blue'>有货 " )   :   @ Html . Raw ( "   color='red'>缺货 " ) ) < / li >
35                        < li > < hr / > < / li >
36                        < li > < a   href = ' # '   class = ' cart '   onclick = ' ' > < img   alt = " "   width = " 50 "   height = " 22 "   src = ' / images / buy . jpg '     / > < / a > < / li >
37                        < / ul >                        
38                < / div >
39                < div   class = ' clear ' > < / div >                
40                < div   id = " tabs "   style = " width:740px;margin:auto; " >
41                    < ul   style = " width:727px; " >
42                        < li > < a   href = " #tabs-1 " > 产品描述 < / a > < / li >
43                        < li > < a   href = " #tabs-2 " > 规格参数 < / a > < / li >
44                        < li > < a   href = " #tabs-3 " > 保修条款 < / a > < / li >
45                        < li > < a   href = " #tabs-4 " > 评论 < / a > < / li >
46                    < / ul >
47                    < div   id = " tabs-1 " >
48                        < p > @ Model . Description < / p >
49                    < / div >
50                    < div   id = " tabs-2 "   style = " border:0; " >
51                        < br   / >   < br   / >
52                        < table   id = " "   width = " 100% "   cellpadding = " 0 "   cellspacing = " 0 "   border = " 0 " > @ Html . Raw ( @ Model . Specification ) < / table >
53                    < / div >
54                    < div   id = " tabs-3 " >
55                        < p > @ Model . Warranty < / p >
56                    < / div >
57                    < div   id = " tabs-4 " >
58                    < / div >
59                < / div >
60                < br   / >
61        < / div >
62
63
码第10行从一个分布视图获取导航信息,这个等会再创建。从第40行到59行是创建一个tab控件,评论页的内容暂时为空,等下再创建。第52行中的产品描述数据是已html代码保存在数据库的,所以要用Html的Raw方法直接显示,不需要进行编码输出。要tab控件正确显示,还需要在模版页jquery函数内加入以下代码:
1$ ( " #tabs " ) . tabs ( ) ;

   现在要完成导航信息,打开CatalogController文件,添加一个Navbar操作,代码如下:

1                [ ChildActionOnly ]
2                public   ActionResult   Navbar ( string   id )
3                {
4                        List < string >   idlist   =   new   List < string > ( ) ;
5                        idlist . Add ( id ) ;
6                        for   ( int   i   =   0 ;   i   <   ( id . Length   -   2 ) ;   i   =   i   +   3 )
7                        {
8                                idlist . Add ( id . Substring ( 0 ,   i   +   3 ) ) ;
9                        }
10                        var   q   =   dc . T_Categories . Where ( m   = >   idlist . Contains ( m . CategoryID ) ) . OrderBy ( m   = >   m . CategoryID ) ;
11                        return   PartialView ( q ) ;
12                }
13

  

代码首先获取产品类别的父类编号,然后查询出父类进行显示。右键单击“Navbar”创建分页页面,页面的内容如下:

1@ model   IEnumerable < Extshop . Models . T_Categories >
2
3@ {
4        foreach ( var   c   in   Model )
5        {
6              @ Html . Raw ( " >> " ) < a   href = ' @ Url . Action ( " List " ,   " Catalog " ,   new   { id   =   c . CategoryID     } ) ' > @ c . Titel < / a >
7        }
8}

现在要完成评论的显示。评论我们使用分别页面很容易显示。首先在产品详细信息页内的id为“tabs-4”的div下添加以下代码:

1                                < div   style = " clear:both; " > < / div >
2                                < div   id = " CommentList " >
3                                @ { Html . RenderAction ( " Index " ,   " Comment " ,   new   {   id   =   @ Model . ProductID ,   page   =   1   } ) ; }
4                                < / div >
5                                < br   / >
6                                @ { Html . RenderAction ( " AddComment " ,   " Comment " ,   new   {   id   =   @ Model . ProductID   } ) ; }
7

代码第3行使用一个分部页面显示评论内容。第6行就用分部页面显示评论添加表单。

新建一个名称为“CommentController”的控制器,并修改index操作代码如下:

1                public   ActionResult   Index ( int   id , int ?   page )
2                {
3                        ViewData [ " ProdcutID " ]   =   id ;
4                        PagedList < T_Comment >   q   =   dc . T_Comment . Where ( m   = >   m . ProductID   = =   id ) . OrderByDescending ( m = > m . CreateTime ) . ToPagedList ( page   ? ?   1 , 2 ) ;
5                        return   PartialView ( q ) ;
6                }
7

代码中第1个参数id表示的是产品的id,第2个参数是评论的当前页。和产品列表一样,使用mvcPager进行分页。完成后创建分部视图页,并将其代码修改如下:

1@ using   Webdiyer . WebControls . Mvc ;
2@ model   PagedList < Extshop . Models . T_Comment >
3@ {
4        foreach   ( var   c   in   Model )
5        {
6                < div   class = " row "   >
7                < div   class = " title " > @ c . Title < / div >
8                < b > @ c . Username < / b > & nbsp ; 发表于 @ ( c . CreateTime ) < br / >
9                  @ c . Description                              
10                < / div >
11        }
12}
13< br   / >
14< div   class = ' pagenav ' > @ Ajax . Pager ( Model ,   new   PagerOptions { PageIndexParameterName = " page " } ,   new   AjaxOptions   {   UpdateTargetId   =   " CommentList "   } ) < / div >              
15

代码中第14行使用了Ajax分页的方法,这样,就可以使用Ajax自动更新该部分。在AjaxOption中定义了UpdateTargetId参数为“CommentList”,意味着当Ajax加载数据后,会自动更新id为“CommentList”的html元素内的内容。

最后要完成的是评论添加分部视图。首先需要创建一个表单模型。在Models目录创建一个名称为“CommentModels”的类,并将类代码修改如下:

1        public   class   CommentModels
2        {
3
4                [ Display ( Name   =   " 评分 " ) ]
5                public   int   Rating   {   get ;   set ;   }
6
7                [ Required ( ErrorMessage   =   " 请输入“标题” " ) ]
8                [ Display ( Name   =   " 标题 " ) ]
9                public   string   Title   {   get ;   set ;   }
10
11                [ Required ( ErrorMessage   =   " 请输入“内容” " ) ]
12                [ Display ( Name   =   " 内容 " ) ]
13                public   string   Description   {   get ;   set ;   }
14
15        }
16

我们只定义需要用户输入的3个项就行了,产品编号和发表用户这些可以从其它地方获取。完成后,切换到CommentController控制器文件,添加显示表单的控制器,其代码如下:

1                [ ChildActionOnly ]
2                public   ActionResult   AddComment ( int   id )
3                {
4                        ViewData [ " ProductID " ]   =   id ;
5                        return   PartialView ( ) ;
6                }
7

在这里需要注意的是要将产品编号带到分部视图。然后创建分部视图,代码如下:

1@ model   Extshop . Models . CommentModels
2
3@ using   ( Ajax . BeginForm ( " AddComment " ,   " Comment " , new   {   id = ViewData [ " ProductID " ]   } ,   new   AjaxOptions   {   OnSuccess   =   " CommentSuccess " ,   LoadingElementId   =   " CommentLoad " ,   UpdateTargetId   =   " CommentMsg "  
4        , OnBegin = " CommentBegin " } ,   new   {   id   =   " CommentForm "   } ) )
5{      
6        < div >
7                < fieldset >
8                        < legend > < / legend >
9                                < div   style = " width:600px;display:block;height:30px; " >
10                                < div   id = ' rating - select '   style = " width:300px; " >
11                                @ Html . LabelFor ( m   = >   m . Rating )
12                                @ Html . DropDownListFor ( m   = >   m . Rating ,   new   SelectList ( new   Dictionary < string , string >   {  
13                                        { " 1 " , " 1 " } ,
14                                        { " 2 " , " 2 " } ,
15                                        { " 3 " , " 3 " } ,
16                                        { " 4 " , " 4 " } ,
17                                        { " 5 " , " 5 " }
18                                  } ,   " Key " ,   " Value " ) ,   new   {   @ class   =   " star " , width = " 120 "   } )
19                                < / div >                                
20                                < div   class = " error " >
21                                        @ Html . ValidationMessageFor ( m   = >   m . Rating )
22                                < / div >
23                                < / div >
24                              < p   style = " width:600px;display:block; " >
25                                @ Html . LabelFor ( m   = >   m . Title )
26                                @ Html . TextBoxFor ( m   = >   m . Title ,   new   {   style   =   " width:500px; "   } )                                
27                              < / p >
28                                < div   class = " error " >
29                                        @ Html . ValidationMessageFor ( m   = >   m . Title )
30                                < / div >
31                              < p   style = " width:600px;display:block; " >
32                                @ Html . LabelFor ( m   = >   m . Description )
33                                @ Html . TextAreaFor ( m   = >   m . Description ,   new   {   style = " width:500px; "   } )                            
34                              < / p >
35                                < div   class = " error " >
36                                        @ Html . ValidationMessageFor ( m   = >   m . Description )
37                                < / div >
38                        < p   style = " text-align:center;width:600px; " >
39                                < input   id = " ComentSubmit "   type = " submit "   value = " 保存 "   / >
40                        < / p >
41                        < p   style = " text-align:center;display:none; "   id = " CommentLoad " > < img   src = " /Images/blue-loading.gif "   alt = " 正在保存…… "   / > < / p >
42                        < p   style = " text-align:center;color:Red; "   id = " CommentMsg " > < / p >
43                < / fieldset >
44        < / div >
45}
46
47< script   type = " text/javascript " >
48        function   CommentSuccess ( e )   {
49                $ ( " #CommentForm   input " ) . removeAttr ( " readonly " ) ;
50                $ ( " #CommentSubmit " ) . removeAttr ( " disabled " ) ;
51                if   ( e . Success )   {
52                        $ ( " #CommentForm " ) [ 0 ] . reset ( ) ;
53                        $ ( " #CommentMsg " ) . html ( e . Message ) ;
54                        var   url   =   window . location ;
55                        re   =   / ( [ 0 - 9 ] * ) [ # ] ? $ / ig ;
56                        var   r   =   re . exec ( url )
57                        if ( r ) {
58                                for   ( var   i   =   0 ;   i   <   r . length - 1 ;   i + + )   {
59                                        if   ( ! isNaN ( r [ i ] ) )   {
60                                                $ ( " #CommentList " ) . load ( " /Comment/ "   +   r [ i ]   +   " /1 " ) ;                                                
61                                        }
62                                }
63                        }
64                }   else   {
65                        $ ( " #CommentMsg " ) . html ( e . Message ) ;
66                }
67        }
68
69        function   CommentBegin ( e )   {
70                $ ( " #CommentForm   input " ) . attr ( " readonly " ,   true ) ;
71                $ ( " #CommentSubmit " ) . attr ( " disabled " ,   " disabled " ) ;
72                $ ( " #CommentMsg " ) . html ( " " ) ;
73        }
74
75< / script >

表单将已Ajax的方式提交,所以在这里使用的是Ajax.BeginForm,而不是Html.BeginForm。表单提交的路径将会是“/Comment/AddComment/{id}”,其中的id是产品的编号。代码第12行到18行将创建一个select元素用来生成评价输入控件。代码54行到62行的作用是评论保存后,通过页面路径获取产品编号,然后通过Ajax更新一下评论分部视图的显示。

余下的工作是完成评论保存控制器,其代码如下:

1                [ HttpPost ]
2                public   JsonResult   AddComment ( int   id , CommentModels   model )
3                {
4                        if   ( ModelState . IsValid )
5                        {
6                                if   ( User . Identity . IsAuthenticated )
7                                {
8                                        try
9                                        {
10                                                T_Comment   comment   =   new   T_Comment ( ) ;
11                                                comment . Description   =   model . Description ;
12                                                comment . ProductID   =   id ;
13                                                comment . Rating   =   model . Rating ;
14                                                comment . Title   =   model . Title ;
15                                                comment . Username   =   User . Identity . Name ;
16                                                comment . CreateTime   =   DateTime . Now ;
17                                                try
18                                                {
19                                                        dc . T_Comment . InsertOnSubmit ( comment ) ;
20                                                        dc . SubmitChanges ( ) ;
21                                                        return   Json ( new   {   Success   =   true ,   Message   =   " 评论已保存! "   } ,   JsonRequestBehavior . AllowGet ) ;
22                                                }
23                                                catch ( Exception   e )
24                                                {
25                                                        return   Json ( new   {   Success   =   false ,   Message   =   " 评论保存失败:数据错误! "   } ,   JsonRequestBehavior . AllowGet ) ;
26                                                }
27                                        }
28                                        catch
29                                        {
30                                                return   Json ( new   {   Success   =   false ,   Message   =   " 评论保存失败:数据错误! "   } ,   JsonRequestBehavior . AllowGet ) ;
31                                        }
32                                }
33                                else
34                                {
35                                        return   Json ( new   {   Success   =   false ,   Message   =   " 评论保存失败:请先登录! "   } ,   JsonRequestBehavior . AllowGet ) ;
36                                }
37                        }
38                        return   Json ( new   {   Success   =   false ,   Message   =   " 添加评论失败:提交的数据存在错误! "   } ,   JsonRequestBehavior . AllowGet ) ;
39                }
40

代码第1行表示改操作是接收Post的操作。AddComment操作将接收两个参数,第1个是产品编号,第2个是用户提交的评论内容。因为使用Ajax提交,所以该操作不需要返回视图,只需要返回Json数据,所以操作的返回值是JsonResult。第4句判断用户的输入是否符合要求。第6句判断用户是否已经登录,如果没有登录,发送错误信息提示用户登录。

这样,整个产品详细信息页就完成了。不过,要使程序正常运行,还需要修改路由表,打开Global.asax.cs文件,在路由中加入以下路由:

1                        routes . MapRoute (
2                                " Comment1 " ,   //   Route   name
3                                " Comment/AddComment/{id} " ,   //   URL   with   parameters
4                                new   {   controller   =   " Comment " ,   action   =   " AddComment " ,   id = 1   }   //   Parameter   defaults
5                        ) ;
6
7                        routes . MapRoute (
8                                " Comment " ,   //   Route   name
9                                " Comment/{id}/{page} " ,   //   URL   with   parameters
10                                new   {   controller   =   " Comment " ,   action   =   " Index " ,   page   =   1   }   //   Parameter   defaults
11                        ) ;
12

第1个路由指示添加评论是如何路由的,如果没有这个,则全部会按第2个路由执行,全部操作转到Index操作去了,这样就会发生错误。

转载于:https://www.cnblogs.com/hainange/archive/2011/01/23/6334313.html

相关文章:

linux安装配置postgres及使用dblink

好久不写东西&#xff0c;一直在看些开源的东西&#xff0c;下面贴下linux上安装配置postgres及使用dblink的操作参考&#xff0c;以供读者和自己今后参考&#xff1a; 1、下载源码&#xff1a;postgresql-9.3.2.tar.gz 2、创建postgres cluster组和用户&#xff1a; groupadd …

从瀑布模型、极限编程到敏捷开发

从瀑布模型、极限编程到敏捷开发---软件开发管理者思维的变化Jack zhai软件开发是一种对人类智慧的管理&#xff0c;对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元&#xff0c;这与冰冷的机器是不可比的&#xff0c;所以在中国的历史上&a…

递归和循环:跳台阶和变态跳台阶和矩形覆盖

题目描述 跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。变态跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上…

【js】将json类型的数组或对象转为字符串

代码实现&#xff1a; JSON.stringify(goodsList); 注&#xff1a;该用法多用于数据的传输&#xff0c;如页面于servlet的数据传输不能使用gson的数组直接传输&#xff0c;使用该方法便可解决问题。

Android XML pull 解析器

Android 并未提供对 Java StAX API 的支持。但是&#xff0c;Android 确实附带了一个 pull 解析器&#xff0c;其工作方式类似于 StAX。它允许您的应用程序代码从解析器中获取事件&#xff0c;这与 SAX 解析器自动将事件推入处理程序相反。清单 10 显示了提要解析接口的一个 pu…

Zepto.js库touch模块代码解析

Zepto.js也许并不陌生&#xff0c;专门针对移动端开发&#xff0c;Zepto有一些基本的触摸事件可以用来做触摸屏交互&#xff08;tap事件、swipe事件&#xff09;&#xff0c;Zepto是不支持IE浏览器的。 下面来解析一些Zepto.js触摸事件的解析&#xff1a; 1.触摸事件离不开:tou…

PHP 常用字符串处理代码片段

移除 HTML 标签 $text strip_tags($input, ""); 返回 $start 和 $end 之间的文本function GetBetween($content,$start,$end){ $r explode($start, $content); if (isset($r[1])){ $r explode($end, $r[1]); return $r[0]; } ret…

【maven】初识maven

一&#xff1a;maven的配置&#xff1a; 集成到eclipse步骤&#xff1a; 1、下载maven&#xff0c;放到软件安装目录&#xff0c;打开目录&#xff1a;MAVEN_HOME/conf/ 2、修改文件setting.xml&#xff1a;仓库配置目录&#xff1a;<localRepository>D:\DATA\lo…

[C++再学习系列] 函数模板和类模板

函数模板和类模板 C 提供类模板和函数模板。函数模板允许重载 &#xff0c;而类模板不允许重载(类无重载概念)。类模板可以进行全特化和偏特化&#xff0c;而函数模板仅能够全特化 。因此&#xff0c;写一个看似函数模板偏特化的函数模板实际上是在写一个单独的主函数模板&…

git init 与 git init --bare 区别

git init 与 git init --bare 区别 发现问题 最早是在公司的wiki上发现了这个命令&#xff0c;google后发现值得记录下来 实践中发现的区别 网上找了很多资料&#xff0c;但说的很乱&#xff0c;干脆在自己的服务器上执行对比了一下&#xff1a;git init demo1 # 表示创建一个…

一个虚函数和虚继承的问题。

这个问题困惑好几天了。废话不多说&#xff0c;先上代码。 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 virtual void aa() 8 { 9 } 10 private: 11 char k[3]; 12 }; 13 14 class B:publi…

Linux性能分析命令工具汇总

转自&#xff1a;http://rdc.hundsun.com/portal/article/731.html?refmyread出于对Linux操作系统的兴趣&#xff0c;以及对底层知识的强烈欲望&#xff0c;因此整理了这篇文章。本文也可以作为检验基础知识的指标&#xff0c;另外文章涵盖了一个系统的方方面面。如果没有完善…

【jsp】使用get方法传值的格式

get:通过地址提交 格式&#xff1a; http://192.168.7.45:7002/jsp29/doAddStu.jsp?stuNo20181013123&stuName%E5%B0%8F%E5%BC%BA&gender0&age19&major%E7%94%B5%E5%AD%90%E5%B7%A5%E7%A8%8B&score650 即&#xff1a;网址?参数名值&参数名值

指针02 - 零基础入门学习C语言42

第八章&#xff1a;指针02 让编程改变世界 Change the world by program 对“&”和“*”运算符再做些说明 如果已执行了语句 pointer_1 &a; (1) &*pointer_1的含义是什么&#xff1f; “&”和“*”两个运算符的优先级别相同&#xff0c;但按自右而左方向结…

java算法----排序----(6)希尔排序(最小增量排序)

1 package log;2 3 public class Test4 {4 5 /**6 * java算法---希尔排序&#xff08;最小增量排序&#xff09;7 * 8 * param args9 */ 10 public static void main(String[] args) { 11 // 需要排序的数组 12 int arr[] { 49, …

你知道dos和cmd之间的关系以及区别吗?

含义 dos 英文disk operation system&#xff0c;意思是磁盘操作系统是微软系列操作系统之一&#xff0c;dos是一个独立的操作系统&#xff0c;dos对操作人员的要求是比较高的&#xff0c;操作者需要记住很多的命令&#xff0c;并利用命令编写大量的命令行&#xff0c;来完成一…

挨踢项目求生法则-团队建设篇

摘要&#xff1a; 知道什么是挨踢项目吧&#xff1f;什么&#xff01;不知道&#xff1f;那IT项目知道了吧&#xff1f;为了不让客户踢、不让老板踢、项目组成员之间不互相踢&#xff0c;俺为大家分享一些减少被踢机会的心得体会。就算不能让项目成功&#xff0c;也至少不会死得…

【jquery】文档操作

属性 1、attr() 获取、设置属性、设置多个属性 代码实现&#xff1a; alert($("div:first").attr("value")); $("div:first").attr("value","这是第一个div"); $("div:last").attr({value: "这是最后一…

基于流式的md5计算-多线程下载工具Lwget介绍

在数据传输的时候&#xff0c;我们希望实现以下目标&#xff1a;1. 使用多线程传输&#xff0c;加速下载速度2. 数据在传输过程中,进行流式md5计算&#xff0c;避免在传输完毕之后校验大文件3. 支持断点续传4. 支持http协议和ftp协议5. 代码尽可能的简单&#xff0c;利于维护 实…

SpringCloud系列一:SpringCloud的简介和架构

声明&#xff1a;本文来源于MLDN培训视频的课堂笔记&#xff0c;写在这里只是为了方便查阅。 一、SpringCloud简介 SpringCloud就是一套分布式服务治理的框架&#xff0c;既然它是一套服务治理的框架&#xff0c;那么它本身不会提供具体功能性的操作&#xff0c;更专注于服务之…

SUST_ACM_2019届暑期ACM集训热身赛题解

问题A:Hello SUST! 知识点&#xff1a;基本输入输出 C/C&#xff1a; 1 #include <stdio.h>2 3 int main() {4 int n;5 scanf("%d", &n);6 while(n --) {7 printf("Hello SUST!\n");8 }9 return 0; 10 } View Code问…

修改默认的个人站点

1、将模板页加入到里面 在地址C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\MySiteLayouts中找到 LayoutFiles.xml 然后将master复制到这个文件夹下 最后在LayoutFiles.xml加入如下代码&#xff1a; <Module Name"Mast…

【java】暑期需要复习的操作

实现分页查询 将网页输入的数据存入数据库 将每个jsp文件都需要的代码抽离出来 添加jquery 全选操作 引入jstl 实现全选功能

11迭代器模式

图片来自head first 设计模式&#xff0c;仅供学习之用 事实证明光看是没有用的&#xff0c;实践才能出真知&#xff0c;迭代器模式没有我想想的那么简单&#xff0c;写了个小例子才发现自己的理解并不深刻。例子是仿照head first的。迭代器是一个完整的类&#xff0c;作用是遍…

吴裕雄--天生自然 高等数学学习:高阶偏导数

转载于:https://www.cnblogs.com/tszr/p/11165379.html

【数据库】兴唐第二十六节课作业

一、设计购物车表、支付信息表和订单表 思路&#xff1a; 购物车中有&#xff1a; 商品名、价格、生产日期、 保质期&#xff08;shelf life&#xff09;、生产厂家。 支付信息中有&#xff1a; 商品名、 价格、 件数、 总价 订单信息有&#xff1a; 发货时间、订单号、预计到…

递归与非递归转换(栈知识应用)

下面例题是一次作业中遇到的&#xff0c;很值得体味&#xff0c;与大家共享下。 递归代码&#xff1a; 1 long f(long m,long n) 2 { 3 long sum; 4 if(m0) sumn1; 5 else if(n0) sumf(m-1,1); 6 else kf(m-1,f(m,n-1)); 7 return sum; 8 } 用递归来做很明了&a…

Silverlight 游戏开发小技巧:角色升级特效

这次我们将使用Projection完成一些有趣的RPG游戏中常用的特效&#xff1a;升级和传送点特效&#xff0c;我们不需要请特效师制作复杂绚丽的特效&#xff0c;而是只需要他们提供关键的几张图片或者设计样式&#xff0c;如果了您有本领教会他们使用Blend来做特效&#xff0c;那就…

使用jQuery开发messager消息框插件

1、插件使用 首先引入jquery库&#xff0c;然后引入dialog.js、dialog.css、messager.js、messager.css&#xff0c;如下&#xff1a; 1 <script type"text/javascript" src"js/jquery/jquery-1.7.2.min.js"></script> 2 3 <script type&q…

Data - 深入浅出学统计 - 上篇

本文是已读书籍的内容摘要&#xff0c;少部分有轻微改动&#xff0c;但不影响原文表达。 &#xff1a;以漫画形式来讲解最基本的统计概念和方法。 ISBN: 9787121299636https://book.douban.com/subject/26906845/引言&#xff1a;统计无处不在 统计值无处不在。我们伴随着统计值…