一、[ApiController]=[ApiControllerAttribute],为什么?
1、ApiController本身是带Attribute的,即ApiControllerAttribute。
下述写法是完全正确的。
2、ApiControllerAttribute继承了Attribute。
ApiControllerAttribute继承了一个类型ControllerAttribute。
ControllerAttribute又继承了一个类型Attribute。
所以ApiControllerAttribute也继承了Attribute。
3、ApiControllerAttribute是一个特性
1》ApiControllerAttribute这个类型本身既然继承了Attribute,那么它就是一个特性。
2》使用这个特性的时候,一般是在方法和类上面去加这个中括号,把这个特性写在里面。
3》是特性且加了中括号[],.NET就会把这个[]里面的Atrribute省略掉。
类似于下图,路由Route的[controller]里,是TestController但在界面上出现只有Test。
4》所以,[ApiControllerAttribute]=[ApiController]
二、三、的准备前提【有时POST请求拿不到数据库里数据】
1、Restful风格:一个控制器里,一般情况下只存在四个方法。这四个方法分别代表了GET(查)、POST(增)、PUT(改)、DELETE(删)。
例如:如果你调用了GET,那么它的定义是你数据库中的数据是不会发生改变的。对于这种操作,我们使用GET进行访问。
2、POST请求拿不到数据库里数据?
Swagger里不会出现这个问题,使用Ajax里的JQuery一般会出现这个问题。
3、在前端做准备
直接添加文件夹,把WebApi改为MVC框架,引入前端Views
1>引入包:Vue3【前端三大框架,Vue.js,React,Angular】在前端引用时要引入包。
1》去哪里引用?——百度搜索Vue的CDN(Content Delivery Network,内容分发网络)
CDN是节点缓存,在每个节点中都存有一份当前的数据缓存,当访问这个节点时发现有我这个数据,那么我在当前节点就把数据拿了,不用再向下探服务器,就是起一个缓存的作用。
2》如下,这样就拿到了CDN的节点
2>引入Vue包后,创建一个 Vue 实例;并将这个实例挂载到 <div id="app(任意名)">
上。
1》<script>里创建Vue实例
它里面的Vue有个方法叫createApp,通过这createApp就可以创建Vue项目。
Vue的作用域范围在下面2》1>的<div>中的app上
这个Vue是上面引入包里的Vue类型。CreateApp是里面的方法。
2》挂载Vue实例
1)<div id="app">里是挂载 Vue 实例的 DOM 元素
输入div.app(快捷键)。
2)<script>里app.mount("#app")挂载Vue实例
#
号在这里不是 Vue 特有的语法或变量,而是 CSS 选择器的一部分,用于指定具有特定 id
的 DOM 元素。
3>在Vue实例里创建变量,并在<div>中使用
由于<script>里面的Vue绑定了id是app的<div>。
所以Vue里面的setup()里面的userName变量是可以在这个叫app的<div>范围内使用的。
1》使用 ref
定义响应式变量
1)ref
返回的是一个对象,需要通过 .value
来访问或修改这个变量的值【见下面4、3>3》3)】
2)响应式变量:Vue 会追踪这个变量的变化,并在其值改变时自动更新 DOM。
即若在setup()里面更改了userName的值,那么前端{