ASP.NET MVC4应用程序基本结构和执行流程---ASP.NET学习笔记(1)
来源:互联网 发布:mac常用的软件 编辑:程序博客网 时间:2024/05/16 04:11
今天开始学习ASP.NET WEB应用,跟的书是《ASP.NET MVC4开发指南》。感觉这本书讲解的较为清晰,不是抓住一个点长篇大论一番或是直接列出长长的字典性质的列表,而是对于能够拓展的地方给予链接,更符合指南的性质。
1.文档路径:APS.NET MVC项目目录中对文档的查找是通过”网址路由“来查找的,APP_Start\RouteConfig.cs 这个文件定义了文档查找的方法:
namespace MvcGuestBook{ public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }}
IgnoreRoute: ASP.NET不处理的网址格式
MapRoute:定义ASP.NET 网址路由的主要方式,其中参数:
- name:路由名称
- url:定义网址的格式,例如代码中的{controller}/{action}/{id},就是控制器/动作/路由值
- defaults:url中各个格式的默认值
根据上面代码中的设置我们知道,该WEB应用一开始运行时会先找controller中的Home控制器,然后寻找并执行其中的About方法(公开的),然而最后一个默认路由就是我们 第一次进入localhost时跳出的默认页面地址。
2.主版页面
~/View/_ViewStart.cshtml文件会在所有View运行之前预先装入,它的默认内容为:
@{ Layout = "~/Views/Shared/_Layout.cshtml";}
其中指示的~/Views/Shared/_Layout.cshtml是一个主版页面:
<!DOCTYPE html><html lang="zh"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta charset="utf-8" /> <title>@ViewBag.Title - 我的 ASP.NET MVC 应用程序</title> <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <meta name="viewport" content="width=device-width" /> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> <body> <header> <div class="content-wrapper"> <div class="float-left"> <p class="site-title">@Html.ActionLink("将你的徽标放置在此处", "Index", "Home")</p> </div> <div class="float-right"> <section id="login"> @Html.Partial("_LoginPartial") </section> <nav> <ul id="menu"> <li>@Html.ActionLink("主页", "Index", "Home")</li> <li>@Html.ActionLink("关于", "About", "Home")</li> <li>@Html.ActionLink("联系方式", "Contact", "Home")</li> </ul> </nav> </div> </div> </header> <div id="body"> @RenderSection("featured", required: false) <section class="content-wrapper main-content clear-fix"> @RenderBody() </section> </div> <footer> <div class="content-wrapper"> <div class="float-left"> <p>© @DateTime.Now.Year - 我的 ASP.NET MVC 应用程序</p> </div> </div> </footer> @Scripts.Render("~/bundles/jquery") @RenderSection("scripts", required: false) </body></html>
View目录下所有的视图都会装入这个主版页面中。
3.创建数据模型
在Model目录下创建一个类后,为该类设置字段:
public class GuestBook { public int Id { set; get; } public string name { set; get; } public string email { set; get; } public string content { set; get; } }
4.创建控制器、视图
1. 在Controller目录下选择创建控制器 2. 选择"包含读/写操作和视图的MVC控制器(使用Entity FrameWork)" 3. 为控制器添加模型类 4. 为数据添加上下文类
其中上下文类也创建在Model目录下
5.数据库文档
如果应用程序被执行过后,在APP_DATA目录下会有隐藏的数据库文档(在资源管理器工具条上点击”显示所有文件”后即可看到)
6.View方法
View()方法是Controller基类的一个辅助方法,有8个重载,用于传递参数给View。
7.@model模型声明
在View(视图)中的第一行,会有类似的模型声明:
@model IEnumerable<MvcGuestBook.Models.GuestBook>
该声明的作用将MvcGuestBook.Models.GuestBook这个对象作为整个视图的主要模型。例如该视图中的某一节点用法:
<strong>姓名</strong>:@Html.DisplayFor(modelItem => item.name)
该用法中的modelItem就是@model声明的主类型,其中的字段都是主模型提供的字段。
8.Html.ActionLink
语句
@Html.ActionLink("留下足迹", "Write")
是一句Razor语法,该语法嵌入在HTML标签中,在解析后输出指定的HTML文本。上面的语句表示超链接功能,第一个参数是超链接标题,第二个链接表示主模型对应的Controller控制器中对应的方法名,也就是点击该超链接后,会交给控制器进行处理。例如语句中的Write方法,在GuestBookContrller类中为:
// GET: /GuestBook/Create public ActionResult Write() { return View(); } // // POST: /GuestBook/Write [HttpPost] public ActionResult Write(GuestBook guestbook) { if (ModelState.IsValid) { db.GuestBooks.Add(guestbook); db.SaveChanges(); return RedirectToAction("Index"); } return View(guestbook); }
我们重载了两个Write类,这个时候就要使用动作过滤器来选择对应的方法。第一个方法是HTTP GET请求传送来时调用的,而第二个方法是HTTP POST请求传来时调用的。我们通过link过来的请求就是GET请求,所以调用第一个方法。
9.字段验证
ASP.NET提供了简便的字段验证方法,在Model中定义后即可:
1.导入System.ComponentModel.DataAnnotations;
2.在字段前注释为[Required]
例如:
[Required] [DisplayName("电子邮件地址")] public string email { set; get; }`
10.修改Model后重建数据库
如果数据类型(Model)字段被修改之后,那么数据库就要进行相应的调整。如果在修改完Model后直接运行WEB应用程序,那么会得到“支持“MvcGuestBookContext”上下文的模型已在数据库创建后发生更改”这样的异常报错,方法是根据MvcGuestBookContext
这个上下文类的注释进行修正:
将代码
System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MvcGuestBook.Models.MvcGuestBookContext>());
添加入Global.asax 文件中的 Application_Start 方法中去,即可在更改数据模型后就自动重新生成数据库。
- ASP.NET MVC4应用程序基本结构和执行流程---ASP.NET学习笔记(1)
- asp.net MVC4的执行流程
- ASP.NET MVC4 学习笔记-1
- ASP.NET MVC4 Metadata学习笔记
- ASP.NET应用程序的执行流程
- ASP.NET MVC4 学习参考
- ASP.NET MVC4 IN ACTION学习笔记-第六波[Ajax in ASP.NET MVC][1/3]
- asp.net mvc4应用程序发布、部署、常见问题
- [MVC4]初识ASP.NET MVC4
- ASP.NET MVC4 IN ACTION学习笔记-第一波
- ASP.NET MVC4 IN ACTION学习笔记-第二波
- ASP.NET MVC4 IN ACTION学习笔记-第三波
- ASP.NET MVC4 IN ACTION学习笔记-第四波
- ASP.NET MVC4 IN ACTION学习笔记-第五波
- ASP.NET 学习笔记之二 建立 ASP.NET 应用程序
- asp.net mvc4+easyui
- asp.net mvc4
- ASP.NET MVC4
- 1的个数
- sharpoint 客户端对象模型之保存数据 手机号码、邮箱验证
- @开发者:这个比赛机会,推荐给你!
- 深度学习2--安装opencv2.4(材料都在百度云上)
- Android设计模式之观察者模式
- ASP.NET MVC4应用程序基本结构和执行流程---ASP.NET学习笔记(1)
- win7 快捷键冲突
- 关于java高并发问题总结
- 【PAT】1041. Be Unique
- windows下的一些技巧
- 字符串常量前面的"L"的作用
- HDU4350-Card
- 如何更新/替换ubuntu16.04内核
- 2016蓝桥杯A组第十题 最大比例