ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续
查看 StoreManager 控制器的代码
现在,Store Manager 控制器中已经包含了一定数量的代码,我们从头到尾重新过一下。
首先,在控制器中包含了标准的 MVC 控制器的代码,为了使用方便,还可以引用我们的模型类所在的命名空间 MvcMusicStore.Models。控制器还拥有了一个私有的 MusicStoreEntities 的私有成员,以方便控制器中的每个 Action 访问数据库。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcMusicStore.Models; namespace MvcMusicStore.Controllers { public class StoreManagerController : Controller { MvcMusicStore.Models.MusicStoreEntities storeDB = new MvcMusicStore.Models.MusicStoreEntities();
Index 和 Details Action
Index 视图获取专辑的列表,包含每一个专辑引用的流派和艺术家信息,向我们在前面 Store控制器的 Browse时候看到的,Index 视图中需要包含对于链接到的流派和艺术家对象来显示相关的信息,所以,在 Index 的 Action 方法中,需要包含这些数据。
// // GET: /StoreManager/ public ActionResult Index() { var albums = storeDB.Albums.Include("Genre").Include("Artist"); return View(albums.ToList()); }
在 Details 方法中,类似于 Store 控制器的 Details 方法,通过专辑的 Id 来获取专辑对象,这里使用 Find() 方法完成,最后,把这个对象传递给视图。
// // GET: /StoreManager/Details/5 public ViewResult Details(int id) { MvcMusicStore.Models.Album album = storeDB.Albums.Find(id); return View(album); }
创建方法 Create
与前面看到的不同,Create 方法需要处理表单,当用户第一次访问地址 /StoreManager/Create 的时候,用户将会看到一个空的表单,HTML 页面中包含一个 <form> 元素,其中包含了下拉列表和文本框等输入元素,用户可以借助他们输入专辑的详细信息。
当用户填写了专辑的信息之后,可以通过点击 “保存” 按钮来提交表单信息到服务器,我们de应用程序可以获取这些信息保存到数据库中。在用户点击 “保存” 的时候,浏览器发出一个 Http 的 Post 请求,到 /StoreManager/Create 地址,表单的内容作为这个 Post 请求的一部分发送回服务器。
ASP.NET MVC 允许我们容易地分割这两种同样对于 Create 方法的请求处理,通过提供两个同名的 Create 方法,一个用来处理 Http Get 请求,一个用来处理 Http Post 请求,区分的方式是在处理 Post 请求的方法前面增加一个 [HttpPost] 的标签。如果增加 [HttpGet] 标签,则表示这个方法仅仅处理 Http Get 请求。通常没有这个标签,则表示无论是 Get 请求还是 Post 请求都可以由这个 Action 方法处理。
使用 ViewBag 向视图传递信息
我们曾经在这个教程的开始使用过 ViewBag, 但是,没有深入讨论它,ViewBag 允许我们向视图传递信息而不需要首先定义强类型的 Model,在创建专辑的 Action 中,因为在表单中需要两个列表框,我们需要向视图传递列表所需要的数据,以便在视图中填充下拉列表框,最简单的方式就是通过 ViewBag 来实现。
ViewBag 是动态对象,这意味着你可以使用 ViewBag.Foo 或者 ViewBag.YourNameHere 形式的属性而不需要预先定义这些属性,控制器中的代码使用 ViewBag.GenreId 和 ViewBag.Artisid 传递流派和艺术家的信息以便生成表单中下拉列表的值,以后,用来在新创建的专辑中使用。
传递到视图的下拉列表的值使用 SelectList 对象表示,对于我们的要求,使用下面的代码。
- 更多asp疑问解答:
- asp正则过滤重复字符串的代码
- 用asp过滤全部html但保留br类似的符号
- 会asp,但感觉asp要过点,想学php。但我一般做的都是小公司的站,用access数
- PHP的空间可以用ASP的源代码吗?
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 想做一个市级的人才网acess,sql数据库,语言asp,jsp,php分别用哪种好
- jsp,asp,php 区别
- 我想找一个有比较多漏洞的网站的源码,比如可以asp,php注入等都可以。供学习研究用。请提供下载地址。。
- 现在候找人做个网站,用ASP,还是PHP语言去做好
- asp,php ,jsp,.net 对于做网站前台的重要吗?
- asp和php的区别是什么?
- 我是新手SEO菜鸟 请问wp dw php asp cms myspl dede 这些软件应该如何区分呀?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?