随笔分类 - (新) ASP.NET Core
摘要:前言 之前有提过, MVC 和 Razor Pages 最大的区别就在 Routing 上. Razor Pages 的结构是 route, page, model route match to page, page declare model (route > page > model) rout
阅读全文
摘要:前言 之前就写过 Asp.net core 学习笔记 ( Configuration 配置 ) 只是有点乱, 这篇作为整理版. 项目中会有许许多多的 Config 要设定. 比较好的管理方式是把它们放到 json file 里. 这样想修改时就不需要改动源码, 改 json file 就行了. AS
阅读全文
摘要:前言 以前就写过了 Asp.net core 学习笔记 (Logging 日志), 只是有点乱, 这篇作为整理版. 参考: docs – Logging in .NET Core and ASP.NET Core Github – Serilog.AspNetCore Setting up Seri
阅读全文
摘要:前言 ASP.NET Core 6.0 Razor Pages 新功能, 我是用 webpack 做打包的, 所以这个对我没有什么帮助. 但是了解一下是可以的. 希望 .NET 会继续发展的更好, 多一点 build-in 的功能. 参考: CSS Isolation in ASP.NET Core
阅读全文
摘要:前言 以前写过 form 表单, 但很不齐全, 这篇想做一个大整理. 主要讲讲在网站中使用原生 Form 的功能, 不足和扩展. 前端是原生的 HTML/JS, 后端是 ASP.NET Core Razor Pages. Simplest Form Overview form 的职责是让 user
阅读全文
摘要:前言 以前的文章: Stream 基础和常用 和 IO 常用. 这篇主要是做一个整理, 方便要用的时候 warm up. 之前有讲过 Bit, Byte 的基本概念: Bit, Byte, ASCII, Unicode, UTF, Base64 这里大概复述一下, 计算机最小的单元是 bit, 1
阅读全文
摘要:前言 ASP.NET Core 6.0 以后, 默认模板去掉了 Program.cs 的 namespace, class 和 Startup.cs, 一开始看会有点懵. 这篇大概记入一下, program, startup 的小知识. 恢复 namespace 和 class 如果不习惯没有 na
阅读全文
摘要:Multiple Form Binding 问题 在一个 page 里面有 2 张 form, 那么就会有 2 个 model binding. 当任何一个 submit 的时候. 由于 2 个 model 都属于 page, 检测 model valid 的时候 2 个都会检查. 当然其中 1 个
阅读全文
摘要:前言 之前的文章有谈过关于 ASP.NET Core 处理 under-posting 的方式. 它会使用 class default value. 许多时候这可能不是我们期望的. 比如当我们想要 patch update resource 的时候. 一种解决方法是把 DTO 改成 nullable
阅读全文
摘要:前言 System.Text.Json 是 .NET 3.0 后推出的, 用来取代原本的 Newtonsoft。 它的特点就是快,一开始的时候很多东西不支持所以很少人用,.NET 6.0 后开始比较稳定了。 这一篇就来系统的看一看它吧。 主要参考: How to serialize and dese
阅读全文
摘要:前言 依据 Restful 的方式, 修改 resource 要用 PUT, 然后把完整的 resource 发出去, resource 的所有信息都将被更新. 但很多时候我们希望只做局部更新, 而且希望只提供局部的 resource info. 比如有个 person resource class
阅读全文
摘要:前言 上一篇说完了动态创建表达式树, 这篇来说一说解析表达式树. 我之所以会用到是因为最近开始大量使用 trigger 来维护冗余. 但 trigger 本身并不好维护 (EF Core 也不支持), 于是就有了自己写点简单的翻译的想法. 比如在我项目中会通过这样来表达一个冗余值 builder.H
阅读全文
摘要:Under/Over Posting 参考: .NET Core WebApi Action is executed even with missing properties in the request body Model Validation in ASP.NET Web API (找 und
阅读全文
摘要:前言 前一篇讲完了反射, 这一篇来讲一下和反射息息相关的表达式树. 首先搞清楚 Delegate, Action, Func, Anonymous Method, Lambda, Expression tree 看大神的文章: C#中的Lambda表达式和表达式树 简单说, Delegate 委托是
阅读全文
摘要:前言 上一篇讲到了各种反射的操作方式, 这一篇主要说说如何找到类型. Type Information 在找类型的时候, 除了依据简单的 string 以外, 还会用到很多类型属性来做判断. 比如它是不是 value type, 它是不是 Enum, 它是不是 interface, 它是不是继承了某
阅读全文
摘要:前言 以前就写过几篇关于反射和表达式树的学习笔记, 但是写的很乱. 最近常用到反射和表达式树, 所以特别写一篇做一个整理吧. 泛型和反射 表达式树 学习笔记 c# 常用反射和表达式树整理 反射在项目中会用到的地方, 一般不是因为要实现业务逻辑, 更多的是因为要更好的代码管理. 这个动机很重要. 这篇
阅读全文
摘要:前言 之前就有写过一篇 <<前后端沟通 naming conversion 转换需要知道的事>> 这篇做一个总结整理. 我们知道 C# 的 Property 是 PascalCase, 而 Javascript 是 camelCase. 2 者要沟通就需要转换. 简单的理解就是把 PascalCas
阅读全文
摘要:前言 Versioning 会导致 Swagger 直接坏掉. 因为 1 个文档无法支持多个版本. 所以需要每一个版本做一个文档. 主要参考 Integrating ASP.NET Core Api Versions with Swagger UI What every ASP.NET Core W
阅读全文
摘要:前言 Swagger (OpenAPI) 是一套 Web API 文档规范. ASP.NET Core 有 2 个 Library 可用来实现 Swagger. Swashbuckle 和 NSwag. NSwag 能直接生成 client code 比如 JS, TypeScript 等等, 但
阅读全文
摘要:前言 项目持续维护, API 就需要版本控制. ASP.NET Core 有官方的插件专门处理 API 版本控制. 主要参考 Your Guide to REST API Versioning in ASP.NET Core Asp.Net.Core WebApi 4种版本控制的方式 How to
阅读全文