首页 > 编程语言 >图解ASP.NET MVC项目运行

图解ASP.NET MVC项目运行

时间:2023-11-14 16:12:03浏览次数:23  
标签:控制器 ASP 架构 视图 所示 MVC Action NET

原文链接:https://jingyan.baidu.com/article/90bc8fc8ac2e52f653640c33.html

吾终日所思也,不如须臾之所学也,刚开始看mvc架构,与以前的winform完全不一样,一头雾水,看完此内容豁然开朗。

1、Global.asax—应用程序启动注册路由

当对网站发出请求时,应用程序是如何把请求引到对应的控制器及里面的Action方法?

首先网站一启动,会提前加载根据控制器和Action方法设置的路由规则,这样一请求,路由就会分析之后把请求引到对应的控制器和Action方法,如下图所示:

注:RouteConfig类位于App_Start文件夹下面。

 

 

 

2、控制器

1)根据前面的解析,每次请求都是先定位控制器,然后再根据路由规则找到对应的Action方法!

2)但是在路由表里,我们只写了Home,但是MVC框架约定,控制器都是以Controller结尾,并继承了基类Controller!

3)在这里Index方法返回值类型是ActionResult,方法名和路由注册的方法名一致,在Index方法内,调用了View方法并且返回,这是一个重载的方法,可以给个参数,作为返回视图的名称,如果没有参数,默认就是以当前Action命名的视图。

4)也就是Asp.netMVC架构,不像Java的MVC通过配置来建立关系,他是约定大于配置,如下图所示:

 


3、视图

视图里的代码类似于之前的ASPX里面的代码,主要是HTML、JS和CSS等前端技术构成,从MVC1.0到MVC5.0变化很大,Razor语法越来越完善,强大,如下图所示:

 


4、向视图传递数据

1)传统的WebForm方式,前置页面类和后置代码类是继承的关系,可以直接进行数据传递。

2)MVC模式下,视图和控制器是完全分离的,通过专用渠道传递数据,ViewData是在控制器和视图之间传递数据的容器之一,如下图所示:

 

 

 

5、ASP.NET MVC执行顺序,如下图所示:

 


6、Model和三层架构 

MVC与三层架构之间有没有区别?  

1)、MVC和三层架构没有必然的关系,架构的思想是不一样的。  

2)、三层架构强调的是物理分离(多个项目构成),MVC强调的是逻辑分离(一个项目构成)。  

3)、MVC中也可以体现三层架构,如下图所示:

 


7、有些MVC企业框架为了方便管理,会故意把Models做分层设计。

注意:在MVC中如果它不属于View也不属于Controller,那么就把它归到Model中。

标签:控制器,ASP,架构,视图,所示,MVC,Action,NET
From: https://www.cnblogs.com/Dongmy/p/17831866.html

相关文章

  • kubernetes web管理页面安装(二)
    参考文件: https://cloud.tencent.com/developer/article/1919416参考命令: https://blog.51cto.com/smbands/4903848 查看当前集群nodekubectlgetnode 下载dashboard组件wgethttps://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.......
  • kubernetes安装(一)
    参考: https://www.cnblogs.com/liuyangQAQ/p/17299871.html部署组件包名称安装包kubeadm集群组件kubelet-1.20.9kubeadm-1.20.9kubectl-1.20.9Docker相关包docker-ce-20.10.7docker-ce-cli-20.10.7containerd.io-1.4.6网络组件https://docs......
  • 安装Kubernetes(k8s)
    安装Kubernetes(k8s)保姆级教程---无坑版一、安装环境说明硬件要求内存:2GB或更多RAMCPU:2核CPU或更多CPU硬盘:30GB或更多本次环境说明:操作系统:CentOS7.9内核版本:3.10.0-1160master:192.168.68.106node01:192.168.68.107node02:192.168.68.108转载请在文章开头附上......
  • netcore net 递归查询示例
    ///<summary>///查询项目列表///</summary>///<paramname="userModel"></param>///<returns></returns>publicasyncTask<List<GetProjectListOutput>>GetProjectList......
  • Kubernetes:kube-apiserver 之准入
    kubernetes:kube-apiserver系列文章:Kubernetes:kube-apiserver之scheme(一)Kubernetes:kube-apiserver之scheme(二)Kubernetes:kube-apiserver之启动流程(一)Kubernetes:kube-apiserver之启动流程(二)Kubernetes:kube-apiserver和etcd的交互Kubernetes:kube-api......
  • 记一次 .NET 某券商论坛系统 卡死分析
    一:背景1.讲故事前几个月有位朋友找到我,说他们的的web程序没有响应了,而且监控发现线程数特别高,内存也特别大,让我帮忙看一下怎么回事,现在回过头来几经波折,回味价值太浓了。二:程序到底经历了什么1.在线程上找原因这个程序内存高,线程高,无响应,尼玛是一个复合态问题,那怎么入手呢?......
  • .NET Conf 2023 议程(简体中文)
    .NETConf2023议程(简体中文)最大的在线.NET活动11月14日至16日。重要:本文内容引用翻译自 www.paioffice.com第一天Tuesday,November1408:00-09:00PST欢迎使用.NET8DamianEdwards,SafiaAbdalla,DavidFowler,GauravSeth,DanielRoth,Glenn......
  • Net 高级调试之八:代码审查及杂项命令
    一、简介今天是《Net高级调试》的第八篇文章。这篇文章设计的内容挺多的,比如:如何查看方法的汇编代码,如何获取方法的描述符,对象同步块的转储,对象方法表的转储,托管堆和垃圾回收器信息的转储,CLR的版本,GC模式,等等,内容挺多的。内容虽然挺多,但是这些都是高级调试的基础。虽然......
  • finalshell报错java.net.UnknownHostException: node2
    前几天是node3连不上,今天早上写作业发现node2又连不上了]$systemctlstatusnetwork.service●network.service-LSB:Bringup/downnetworkingLoaded:loaded(/etc/rc.d/init.d/network;bad;vendorpreset:disabled)Active:active(exited)since二2023-11-1408:......
  • 使用 dotnet-monitor 诊断.NET应用程序
    生产环境中收集诊断信息在生产环境中,收集诊断信息(如跟踪、日志、度量和转储)可能具有挑战性。通常,必须访问环境,安装一些工具,然后收集信息。dotnet-monitor简化并统一了收集诊断信息的方式,通过暴露一个RESTAPI,无论您的应用程序在哪里执行(在您的本地机器上,内部服务器上,或在Kuber......