stevenhqq

无知逼着我不断学习,唯有这种方式,才能感觉自己还有点价值。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     StoreManagerController商品信息维护管理控制器。该控制器有Authorize特性标记修饰,并且指定了Authorize特性的Roles为"Administrator"。说明该控制器必须是要经过授权才能访问,并且必须是Administrator组的。该控制器用于商品信息的一些维护操作。

注释后的源代码如下:

1 /// <summary>
2 /// 商店管理控制器
3 /// 规定权限必须是管理员才能使用该控制器
4 /// </summary>
5   [Authorize(Roles = "Administrator")]
6 public class StoreManagerController : Controller
7 {
8 MusicStoreEntities storeDB = new MusicStoreEntities();
9
10 //
11 // GET: /StoreManager/
12   /// <summary>
13 /// //检索相册并包含其关联的类别以及艺术家对象
14 /// </summary>
15 /// <returns></returns>
16 public ActionResult Index()
17 {
18 //检索相册并包含其关联的类别以及艺术家对象
19 var albums = storeDB.Albums
20 .Include("Genre").Include("Artist")
21 .ToList();
22
23 return View(albums);
24 }
25
26 //
27 // GET: /StoreManager/Create
28 /// <summary>
29 /// 创建相册
30 /// </summary>
31 /// <returns></returns>
32 public ActionResult Create()
33 {
34 //获取所有类别名(根据名称排序后的)
35 ViewBag.Genres = storeDB.Genres.OrderBy(g => g.Name).ToList();
36 //获取所有艺术家(根据名称排序后的)
37 ViewBag.Artists = storeDB.Artists.OrderBy(a => a.Name).ToList();
38
39 var album = new Album();
40 //用空相册对象来填充模型
41 return View(album);
42 }
43
44 //
45 // POST: /StoreManager/Create
46 /// <summary>
47 /// 创建相册
48 /// </summary>
49 /// <param name="album">相册对象</param>
50 /// <returns></returns>
51 [HttpPost]
52 public ActionResult Create(Album album)
53 {
54 //模型是否通过验证
55 if (ModelState.IsValid)
56 {
57
58 //Save Album
59 //将相册添入数据库并保存
60 storeDB.Albums.Add(album);
61 storeDB.SaveChanges();
62 //重定向到当前控制器下的列表页面
63 return RedirectToAction("Index");
64
65 }
66
67 // Invalid – redisplay with errors
68 //代码运行到这里肯定是模型没有通过验证,所以重新加载页面以便用户修改数据重新提交
69 ViewBag.Genres = storeDB.Genres.OrderBy(g => g.Name).ToList();
70 ViewBag.Artists = storeDB.Artists.OrderBy(a => a.Name).ToList();
71
72 return View(album);
73 }
74
75 //
76 // GET: /StoreManager/Edit/5
77
78 /// <summary>
79 /// 编辑指定编号的相册
80 /// </summary>
81 /// <param name="id">相册编号</param>
82 /// <returns></returns>
83 public ActionResult Edit(int id)
84 {
85 //获取所有类别名(根据名称排序后的)
86 //获取所有艺术家(根据名称排序后的)
87 ViewBag.Genres = storeDB.Genres.OrderBy(g => g.Name).ToList();
88 ViewBag.Artists = storeDB.Artists.OrderBy(a => a.Name).ToList();
89 //获取需要修改指定编号的相册信息
90 var album = storeDB.Albums.Single(a => a.AlbumId == id);
91 //呈现界面以便修改
92 return View(album);
93 }
94
95 //
96 // POST: /StoreManager/Edit/5
97 /// <summary>
98 /// 保存修改
99 /// </summary>
100 /// <param name="id"></param>
101 /// <param name="collection"></param>
102 /// <returns></returns>
103 [HttpPost]
104 public ActionResult Edit(int id, FormCollection collection)
105 {
106 //从数据库中提取要修改的那条数据模型
107 var album = storeDB.Albums.Find(id);
108
109 //将表单的数据更新到刚从数据库中提取的模型中
110 if(TryUpdateModel(album))
111 {
112 //保存修改
113 storeDB.SaveChanges();
114 //重定向到当前控制器下的Index action
115 return RedirectToAction("Index");
116 }
117 else
118 {
119 //如果表单的数据不能正确更新到模型中,则返回到重新编辑界面。
120 return View(album);
121 }
122 }
123
124 //
125 // GET: /StoreManager/Delete/5
126 /// 此处删除相册信息,我觉得代码有点啰嗦。
127 /// 没必要在删除的时候先呈现一个要删除的相册详细内容界面。
128 /// 可以通过列表直接删除就是,顶多弹出一个对话框来确认删除就是。(javascript)
129 /// 当然这里是另弹出一个确认删除的页面,所以需要呈现模型数据
130
131 /// <summary>
132 /// 删除指定编号的相册信息
133 /// </summary>
134 /// <param name="id">相册编号</param>
135 /// <returns></returns>
136 public ActionResult Delete(int id)
137 {
138 //查找指定编号的相册信息
139 var album = storeDB.Albums.Find(id);
140 //呈现出要删除的相册信息,以便确认操作。
141 return View(album);
142 }
143
144 //
145 // POST: /StoreManager/Delete/5
146
147 /// <summary>
148 /// 删除指定编号的相册信息
149 /// 接收提交删除操作的表单。
150 /// </summary>
151 /// <param name="id">要删除相册信息的编号</param>
152 /// <param name="collection">表单数据</param>
153 /// <returns></returns>
154 [HttpPost]
155 public ActionResult Delete(int id, FormCollection collection)
156 {
157 //找出要删除的相册信息
158 var album = storeDB.Albums.Find(id);
159 //从数据库中删除该条信息
160 storeDB.Albums.Remove(album);
161 // 保存修改到数据库
162 storeDB.SaveChanges();
163 // 呈现删除后的消息界面
164 return View("Deleted");
165 }
166 }

    Index Action用于呈现相册列表及其相关的详细信息。

    Create Action用于新建相册信息并保存到数据库中。

    Edit Action用于编辑指定编号的相册信息并保存到数据库中。

    Delete Action用于删除指定编号的相册信息并保存到数据库中。

    看完这个StoreManageController之后,觉得少了几个Action。没有提供维护Genre类别、Artist作者、以及Album对象的图片维护的功能。也许作者定义的这个小项目中是不需要这些维护的,但我个人认为还是加上比较好。

posted on 2011-03-05 15:07  撕体分黑蛐蛐  阅读(794)  评论(2编辑  收藏  举报