更多模型绑定及验证内容请参考文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-2.1
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-2.1
其中模型验证的使用方式与ASP.NET Mvc一致,仍然是通过相应的验证特性对模型或模型属性进行标记。
说完Action方法参数的绑定,再来看一下Action方法的返回类型,在ASP.NET Mvc中Controller提供了返回页面内容的View方法以及返回Json内容的Json方法(当然还有文件、重定向、404等等其它内容返回方法,详见Controller与ControllerBase类型)。
这里有一个需要注意的地方是当使用Json方法返回一个对象实例时,默认使用首字母小写的驼峰命名方式序列化实例的属性名称,如下图所示:
访问结果:
要使用大写驼峰形式命名需要在配置Mvc服务时添加以下代码来修改Json默认的序列化配置:
注:同样的问题也存在于WebAPI的Ok方法以及Signalr的Json格式协议。
静态资源由于ASP.NET Core已经不再使用IIS请求管道,所以对于静态资源的访问来说需要在请求管道中添加相应的处理中间件来完成:
默认的无参UseStaticFiles方法将wwwroot目录作为静态资源存放目录,如果要添加其它静态内容目录可以再次使用UseStaticFiles方法,并通过StaticFileOptions对目录的访问路径以及实际路径进行配置:
注:由于ASP.NET Core可以在Linux下运行,所以对于Linux来说路径是大小写敏感的,另外由于Windows和Linux类系统的路径分隔符也不一致,所以为了保证路径的统一,可以使用Path.Combine方法,该方法会根据操作系统的不同对路径进行不同的处理。
另外对于css及js资源文件的打包、压缩功能,最新版本(ASP.NET Core 2.1)的应用模板以及不会自动添加相关功能,需要在拓展工具中添加Bunlder& Minifier拓展:
然后通过右键js等资源文件来创建bundleconfig.json文件:
WebAPI API控制器的创建
ASP.NET Core将Mvc和WebAPI进行了合并,它们的实现都直接或间接继承了ControllerBase类型,只不过Mvc的基类Controller在ControllerBase的基础上添加了一些用于处理View的功能。
用ASP.NET Core开发WebAPI时,Controller类型直接继承ControllerBase。然后这个API的Controller就具有了基类的特性,返回一个结果仅需要使用Ok方法即可,如下图所示:
然后在路由表中添加路由: