ASP.NET MVC4应用程序基本结构和执行流程---ASP.NET学习笔记(1)

详解ASP.NET MVC的运行 ASP.NET MVC的路由系统通过对HTTP请求的解析得到表示Controller、Action其他相关的数据,并以此为依据激活Controller对象,调用相应的Action方法,并将方法返回的ActionResult写入HTTP回复中。为了更好的演示其实现原理,我创建一个简单的ASP.NET Web应用来模拟ASP.NET MVC的路由机制。这个例子中的相关组件基本上就是根据ASP.NET MVC的同名组件设计的,只是我将它们进行了最大限度的简化,因为我们只需要用它来演示大致的实现原理而已。[源代码 阅读详情

  今天开始学习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 网址路由的主要方式,其中参数:

  1. name:路由名称
  2. url:定义网址的格式,例如代码中的{controller}/{action}/{id},就是控制器/动作/路由值
  3. 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>&copy; @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 MVC,创建第一个ASP.NET MVC项目 知识点:理解ASP.NET MVC 阅读详情

相关推荐

.NET-MVC流程.png

asp.net mvc框架整体流程图,提供给大家以供参考

ASP.NET MVC3 基础教程 – Web Pages 1.0

<br />  I:Web Pages 1.0中以“_”开头的特别文件(文件命名时不区分大小写)<br />  “_appstart.cshtml” & “_pagestart.cshtml” & “_viewstart.cshtml”<br />  _appstart.cshtml - 应用程序启动时在Global. Application_Start方法后执行。<br />  功能:用于进行App的初始化时,需要进行处理的内容,例:向数据库记录系统初始化的一些信息。<br />  功能与Global.A

Zero的专栏 979

创建一个.NETMVC的项目步骤

Asp.net MVC-3-执行过程

本篇主要讲述MVC处理请求时创建Controller执行Action的完整过程。 创建Controller 先查看MvcHandler中处理请求的方法BeginProcessRequest: protected internal virtual IAsyncResult BeginProcessRequest(HttpContextBase httpConte...

aiqian8176的博客 213

ASP.NET MVC 快速入门(图文版)

MVC是当前比较流行的WEB程序开发模式之一,ASP.NET MVC.NetMVC的一种实现。MVC(Model View Controller 模型-视图-控制器)具体如下所示:Model(模型)表示应用程序核心(比如数据库记录列表)。View(视图)显示数据(数据库记录)。Controller(控制器)处理输入(写入数据库记录)。

白开水 3348

ASP.NET MVC 项目文件夹结构

首先,打开Visual Studio, 新建一个demo 项目的solution,选择 Blank Soution. 第二步,创建文件夹,按自己的需求创建。在这个Demo 中,我将创建4个文件夹。   Presentation: 主要放MVC web 项目   Tests: 放单元测试项目   Libraries: 放数据处理项目(可以认为这是Model)   Plug...

a3391111的博客 484

ASP.NET学习】ASP.NET MVC基本编程

在 Web.config 文件中,可以定义与应用程序有关的各种设置,包括连接字符串、验证模式、HTTP 模块、错误处理、会话状态、缓存设置等等。在这个文件夹里存放的是用于呈现数据模型的视图页面,可以包含 HTML、CSS、JavaScript等内容,用于呈现渲染用户界面。由于常用字体可能会在用户的系统中缺少,因此,网站通常会将自定义字体文件包括在 Fonts 文件夹中,以确保字体在用户设备中正确地显示。它是轻量级的、可测试性高的框架,同时整合了所有已有的 ASP.NET 特性,比如母版页、安全性认证。

杰西笔记 1819

基于.Net Framework的asp.net mvc Web API执行流程周期

ASP.NET MVC Web API 的执行流程生命周期,需要结合请求处理管道、核心组件以及生命周期方法进行阐述。RouteTableMvcHandler(生命周期钩子)ViewResultJsonResultcshtmlViewDataViewBagModelResponseWeb API 的执行流程MVC 类似,但更轻量级,适用于 RESTful 服务。

极客神殿 1322

ASP.NET MVC应用程序执行过程分析

ASP.NET MVC应用程序执行过程分析2009-08-14 17:57 朱先忠 朱先忠的博客 我要评论(0) 字号:T | TASP.NET MVC框架提供了支持Visual Studio的工程模板。本文介绍ASP.NET MVC应用程序执行过程分析。AD: 创建一个简单的ASP.NET MVC应用程序ASP.NET MVC框架

ligongruangao的专栏 1273

C#、ASP.NETASP.NET MVCASP.NET web form、asp.net core mvc的区别。哦我的上帝啊!这可真糟糕

微软的命名很糟糕。技术上有两个框架:ASP.NETASP.NET Core,它们分别基于.NET Framework.NET Core构建。 当Microsoft首次尝试创建一个遵循MVC模式的“现代”Web应用程序平台时,它将这个新平台称为“ASP.NET MVC”,以区别于以前的ASP.NET应用程序(主要是Web Forms)。然后,为了更加混淆事情,他们后来添加了“ASP.NET We...

菜鸟变凤凰 2431

一文讲懂C#、ASP.NETASP.NET MVCASP.NET web form、asp.net core mvc的区别

一文讲懂C#、ASP.NETASP.NET MVCASP.NET web form、asp.net core mvc的区别

Blue 4479

ASP.NET专题】(1)——ASP.NET MVC初探

ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架.已于2009年3月19日正式发布. MVC(Model-View-Controller)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)控制器(Controller). 既然是一个优秀的框架,那么就值得去学习一把,网上搜索了许多资料,希望对

薛敬明的专栏 2754

创建ASP.NET MVC5 应用程序

创建第一个ASP.NET MVC项目。使用Visual Studio 2017/2019创建ASP.NET MVC5应用程序,要求如下: (1)选择“MVC”模板,创建ASP.NET MVC应用程序。 (2)分别修改主页、关于我们及联系方式页面内容。 页面效果如图所示: 首页效果 关于我们效果 联系方式效果 实践思路: 选择菜单“文件”→“新建”→“项目”,在弹出的“新建项目”对话框选择“ASP.NET Web应用程序(.NET Framework)”。 在“新建ASP.NET Web应用程序”对话框选择

m0_47675090的博客 5944

ASP.NET MVC简介

ASP.NET MVC是一种构建web应用程序的框架,它将一般的MVC模式应用于ASP.NET 框架。那么,如何看待asp.net框架asp.net mvc之间的关系呢?在asp.net 1.0发布时,asp.netweb from被人们看成是同一事物,尽管当时(2002)asp.net已经支持两层抽象,即ui层(web from层,由服务器控件ViewState等组成);web层(管道程序...

Abel_01_xu的博客 866

.NET MVC执行过程

1、网址路由比对 2、执行Controller与Action 3、执行View并返回结果 在使用MVC中是由IgnoreRoute()辅助方法对比成功的,会导致程序直接跳离MVC执行生命周期,将程序继续执行的权利交回给IIS,由IIS决定接下来应该由哪个模块或哪个处理例程(Handler)来执行。 阶段 详细 接收应用程序的第一次请求...

weixin_30527551的博客 145

asp.net mvc 流程初探

在知道asp.net mvc 流程之前,必须知道完整的http请求在asp.net framework中的处理流程: HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication Factory--&gt...

weixin_30892987的博客 244

ASP.NET MVC流程解说

          开始想这个标题时,,很忧郁什么标题将得到更好的叫什么,最后确定的解释,虽然稍0基金会,但是,这个概念是非常。我想出了一个相当的价格值的。,開始。   1MVC基本开发流程   2、webformMVC的选择   3、MVC的内部过程     1MVC的开发流程        MVC的出现时微软在2009年左右開始提出的站点开发的新的发展方...

weixin_33859844的博客 205
上一篇: Hadoop完全分布式部署---Hadoop学习笔记(3)
下一篇: g++的编译及调试
miaote
博客等级 码龄10年 6粉丝 15原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值