Posts in 2021
2021/12/30 下午10:46:19
Blazor系列转载`终结啦`,其实站长在25号时就已`完成转载`,并同步在`Dotnet9`网站(`https://dotnet9.com`)发布,并创建了一个专辑`《大家一起学Blazor》`,大家可随时在网站浏览。
2021/12/27 下午8:53:19
TypeScript非常优秀。它完美地结合了强类型和快速开发,因此非常好用,我在许多情况下都会默认选择这个库。但是,世上没有完美的语言,有些情况下TypeScript并不是最合适的工具:
2021/12/26 下午9:56:27
我开发了一个对.Net程序瘦身的工具,可以把被引用但是没有被使用的程序集删除。我用它把一个.Net core程序从`147兆`瘦身到`59.5`兆。
2021/12/25 下午9:50:23
昨天说到单元测试,但有些时候可能由于时间关系没办法完整测试
2021/12/25 下午8:39:11
开发一个系统最无聊的过程大概就是解决BUG了,尤其是那种尝试对null 对象取值的错误(`Object reference not set to an instance of an object.`),这应该是大部分人刚踏入编程领域最常碰到的问题,为了从枯燥的解决BUG过程解脱,这篇就来介绍`单元测试`。
2021/12/25 下午7:23:26
在`EF Core`中`批量`执行`更新`、`删除`、`插入`数据的框架`Zack.EFCore.Batch`已经发布新版,新版增加了对`.NET 6`的支持,数据批量插入的时候支持`ValueConverter`,彻底解决了`“更新数据的时候,当两列的表达式等价时候出现的The count of columns should be even异常”`。
2021/12/25 下午5:51:34
之前有说到`ASP.NET Core Identity` 使用的是基于`Claim` 的验证,其实`ASP.NET Core Identity` 有不同类型的授权方式,最简单的`登录授权`、`角色授权`、`Claim 授权`,但上述几种都是以一种方式实现:原则授权(`Policy-based authorization`)。
2021/12/25 上午11:08:26
前面说过`ASP.NET Core Identity` 是基于`Claim` 的验证,而`Role` 就是类型为`Role` 的`Claim`
2021/12/24 下午11:20:13
昨天角色的`CRUD` 功能都完成了,接着就是要把角色分配给用户了
2021/12/24 下午10:46:51
有些情况下,需要在程序运行期间动态执行C#代码,比如,将某些经常改变的算法保存在配置文件中,在运行期间从配置文件中读取并执行运算。这时可以使用C#脚本来完成这些工作。
2021/12/23 下午11:08:41
首先添加承载角色数据的`ViewModel`,因为接下来的权限会以角色判断
2021/12/23 下午10:51:24
前天有在`Blog.razor`加入通过验证及未通过的显示内容,但如果系统要呈现的未通过验证内容都一样,在每个Component 都这样写就太浪费时间了,可以利用`App.razor`帮我们做统一呈现的事。
2021/12/23 下午10:19:53
前面有说到`UserAuthentication()`跟`UserAuthorization()`,这两个的差别在于:前者用于验证登录者是谁,后者则决定登录者可以做什么。
2021/12/23 下午9:02:21
最近部门在推微前端,需要按功能拆分多个子应用,主应用在加载的过程中经常出现加载失败的问题。
2021/12/22 下午11:59:48
昨天做的验证只针对`Identity` 系统,没有包含到我们的日志
2021/12/22 下午11:01:31
今天来实现身分验证的部分
2021/12/22 下午10:49:21
目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以:`数据库 MySQL 是否需要容器化?`
2021/12/21 下午11:36:29
在开发系统时,记录是一件很重要的事,前面都没有提到,笔者在最近才想到这点,所以就来实现吧!
2021/12/21 下午10:04:11
在大部分的网站中,上传图片也是很重要的功能,今天我们就来操作下。
2021/12/20 下午11:04:06
假设今天有个状况是这样:有一条日志,新增第二条但还没提交前,想将第一条删除,这时会发生什么事呢?
2021/12/20 上午12:21:26
将矢量图形打包成字体的形式,使用方式也和我们使用字体一样,能够自由设置图标的大小,图标的颜色。相对于传统图片来说,优点还是很明显的:
2021/12/19 下午6:56:17
接下来就是讲跟数据库关联的内容了,会着重说明ASP.NET Core 跟EF Core,如果有需要改页面才会说到Blazor,这边会花比较多篇幅着墨。
2021/12/18 下午11:34:26
我们现在有了基本的日志,但是每次输入完重新加载页面数据都会重置,因为这些数据都只存在于浏览器,没有真正储存到数据库,为了保存下来,我们要跟数据库连接。
2021/12/18 下午10:35:17
有时候会想对不同Component 做个别样式设置,但如果把class 都写在`wwwroot/css/site.css`,或是针对某个元素改动样式,可能导致改一个就影响全部Component,这种全域冲突是必须避免的,但应该怎么做?
2021/12/18 下午6:24:32
本文是使用 WPF 做个 PowerPoint 系列的博客,本文来告诉大家如何解析 PPT 里面的文本描边效果,在 WPF 应用中绘制出来,实现像素级相同
2021/12/16 下午9:02:26
虽然Blazor 不需要用到JavaScript,但某些已有的js库 还是很方便,不能因为不想用JavaScript 就全部舍弃,Blazor 就提供了调用JavaScript 的方法,这种情况称为JavaScript interoperability(简称JavaScript interop)。这篇就来实现Delete 按钮的提醒窗口,因为删除是很重要的功能,不能让使用者轻轻一按就轻易删除。
2021/12/16 下午8:51:16
不要小看摸鱼,所有天才的点子都不是敲键盘时激发的。在工作遇到阻滞时,越是投入工作越是找不到解决方案,这时候把目光从屏幕挪开,说不定在一边洗澡一边玩着小黄鸭时,一边发呆一边看着窗外时,一边睡觉一边扣肚子时,解决问题的灵感突然就掉进了脑海里。
2021/12/16 下午8:48:19
目前的4篇日志是来自我们写好的假数据,但正常来说不会这样做,而是有个按钮让用户点击了之后,增加或减少日志的数量。
2021/12/16 下午12:57:34
Blazor允许您`使用C#`而不是JavaScript`构建交互式`Web UI`。 Blazor应用由可重用的Web UI组件组成,这些组件使用C#、HTML和CSS实现。客户端和服务器代码都是用c#编写的,允许您共享代码和库。
2021/12/15 下午11:38:24
昨天不小心把Reset按钮的type改成button,今天改回reset。
2021/12/15 下午10:53:17
目前`MyButton`有3个`[Parameter]`,如果再增加的话,又要再定义新的`[Parameter]`,为了避免不断更新这个Component,我们来用Blazor提供的`@attribute`。
2021/12/14 下午11:31:22
现在我们有一个可以输入日志的界面了,但日志就是每天都要写的意思,只有一篇怎么够呢?我们来加上blog。
2021/12/14 下午10:18:54
假如我们想增加的按钮用来清除`form`(表单)的数据,最快的方式是增加一个`type=”reset”`的按钮,这时候就用到两个按钮了,可以用到Blazor的核心概念:组件封装。
2021/12/13 下午10:36:21
现在每次启动项目,预设路径都会是`/`,但我们目前没有Component套用这个路由,要自己切换到`Post`实在有些麻烦,另外Menu的图案也跟名称不符,我们来调整一下。
2021/12/13 下午9:38:15
自己建立的Service都必须在Startup.cs(Blazor Server)或Program.cs(Blazor WebAssemlby)注册,但有些基本Service就不用自己做了。
2021/12/12 下午9:59:24
昨天看到`FetchData.razor`的代码太长了,为求方便,我们把`@code`的部分抽取出来另成一个文件。
2021/12/12 上午10:01:23
C# 的 GitHub 页面上记载了一长串诱人的想法,其中一些令人头疼的问题仍在讨论中。
2021/12/11 下午1:27:42
问题来了,为什么Blazor会知道WeatherForecastService在这里可以调用?
2021/12/10 下午11:51:41
我遇到的大多数 Windows 窗体应用程序都不存在或单元测试覆盖率极低。而且它们通常也很难维护,项目中各种 Form 类的代码背后有数百甚至数千行代码,但它不必是这样。
2021/12/10 下午11:01:39
由于笔者当初是用ASP.NET Core API + Blazor Server,所以会以Blazor Server示范,日后研究完Blazor WebAssembly会再将心得补上。
2021/12/10 上午12:13:34
下载Visual Studio后首先建立一个Blazor解决方案,里面建立Blazor Server项目,方案位置可以自己选择(注:新版Visual Studio将Blazor Server跟Blazor WebAssembly的新建项目模板拆分了,较为直观)
2021/12/9 下午11:04:23
笔者对网站的认知为前端、后端及数据库,使用者在浏览器页面按下按钮或是表单请求,触发前端事件,将收集起来的条件打包送往后端
2021/12/9 下午10:35:19
笔者接触软件行业的时间不长,先后接触三种架构
2021/12/9 下午9:25:22
如果您一直紧跟 .NET 世界的最新发展趋势,那么现在您一定听说过 Blazor。
2021/12/6 下午10:01:36
创建一个Blazor TabControl组件,有两个目标知识点
2021/12/6 下午2:16:59
简单来说,若是我们不使用Bootstrap 4,而是用手刻的方式来撰写网页,HTML 的内容我们得要自己写(废话),CSS 我们也得要一个一个自己设定(又一个废话),可是若是使用Bootstrap 4 的话,很多常用的CSS 他已经预先帮我们写好了,我们只要熟悉Bootstrap 4 的文件,知道他预写的CSS 是用哪一个class 名,届时只要直接套用到标签上就可以了
2021/12/3 下午12:27:39
移动端和桌面:适用于 iOS、Android、macOS 和 Windows 的原生 .NET MAUI 应用程序
2021/11/30 下午4:57:37
仓库README很素,但看作者README贴的几篇博文介绍,你会喜欢上它的
2021/11/23 下午9:13:07
WinForms上MVVM技术的必要性,发现要实现MVVM框架其实并不难,关键在于模型(Model)和视图(View)的双向绑定,即模型的改变引起视图内容的改变,而视图的改变也能够引起模型的改变。
2021/11/21 下午7:48:23
可以编译该项目。整个控件控除了动画函数由Silverlight提取出来和ColorEditorExt.cs颜色面板视图设计器扩展器在网上例子修改而来,其他都是自己在原生控件基础上写的,没有使用任何第三方库,所以放心使用,没有侵犯他人著作权的问题。
2021/11/19 下午5:38:15
C# 10已与.NET 6、VS2022一起发布,本文按照.NET的发布顺序,根据微软官方文档整理C#中一些有趣的语法特性。
2021/11/10 下午2:58:50
很简单,用是因为好用,性能和语法表现力/开发速度都比java/go强,干嘛不用呢。
2021/11/9 上午10:08:39
WPF 备份某控件的一些属性,做一些神奇的操作,然后再还原这些属性。
2021/11/9 上午10:06:30
在EntityFramework Core中的实体是不直接支持枚举类型的操作,这让我们在开发过程中带来不少的麻烦
2021/11/2 下午9:57:48
分享一下之前学习的一个登录小案例
2021/11/2 下午8:47:54
多对多关系不像其他关系那么简单,在这篇文章中,我将向您展示如何创建多对多关系以及如何在 EF Core 中使用它们。
2021/10/21 上午10:34:33
公司交给你一个任务让你写一个API接口,那么我们应该如何设计?
2021/10/20 下午6:18:16
这个属性设置为false,看起来没有变化,但操作上已经把他完全忽视了,不触发事件,可以直接点到它下面的东西。
2021/10/18 下午4:53:35
数据绑定是一种强大的技术,它允许数据在UI元素和业务模型之间流动。当业务模型中的数据发生变化时,它会自动将更改反映到UI元素上。
2021/10/18 下午4:51:27
SwiftUI 是Apple 新出面向未来、跨多端解决方案、声明式编程
2021/10/18 下午4:51:00
分享一下之前学习的一个登录小案例
2021/9/22 下午10:10:21
当 WPF 客户端需要实现插件系统的时候,一般可以基于容器或者进程来实现。如果需要对外部插件实现异常隔离,那么只能使用子进程来加载插件,这样插件如果抛出异常,也不会影响到主进程
2021/9/18 上午11:39:58
有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件。
2021/9/18 上午11:35:57
.NET Core,.NET5默认配置都是只加载一次,修改配置时都需要重启才能生效,如何能修改即时生效呢?
2021/9/9 下午11:55:02
基本全是代码
2021/8/21 下午11:44:11
采用SwiftUI Core Graphics技术,与C#的GDI+绘图类似
2021/7/25 下午12:06:07
使用Prism做MVVM,优点咱就不说了,主要用了容器注入,消息和DI,比自己写省很多事。网上有很多标准的MVVM的使用方法,但是没有形成一个系统级的框架。本框架从登录到具体业务的使用,还有自动升级都搭建完成
2021/7/10 下午11:29:38
本文不打算介绍功能代码,分享一个油管关于Flutter的分享视频
2021/7/10 下午10:27:47
使用过record吗?
2021/7/2 下午10:12:46
今天介绍一个用于在 WPF 中显示动态 GIF 图片的库,可在 XAML 或代码中使用:`WpfAnimatedGif`。
2021/6/28 下午10:53:47
一系列非常简单易用,对Windows API做了极好封装的.NET类库,几乎不用再写繁琐的Windows API转换函数了。
2021/6/22 下午10:57:07
如果你是一个iOS、macOS、tvOS或watchOS的开发者,Xcode或许是你最常接触的IDE。
2021/6/19 下午2:24:28
多了解点没错的
2021/6/1 下午10:19:09
学习永不止步
2021/4/29 上午9:27:26
异常处理在编程中非常重要,一来可以给用户友好提示,二来也是为了程序安全。
2021/4/18 下午3:45:15
原理是将`Winform或WPF 应用程序,宿主到ASP.NET Core Web API`上
2021/4/17 下午8:41:31
今天站长推荐一款日志可视化组件`LogDashboard`,可以不用安装第三方进程,只需要在项目中安装相应的**Nuget**包,添加数行代码,就可以实现拥有带Web页面的日志管理面板,十分nice哦。
2021/4/14 下午5:32:16
有网友提出需求,在Prism的Module中如何弹出对话框?像主界面弹出关于对话框一样?
2021/4/11 上午9:50:47
开源免费的redis包
2021/4/7 下午11:59:02
介绍两种开发Windows桌面应用程序的方法之间的主要区别,这些方法可以在现代系统开发中发挥更好的作用。
2021/4/5 下午10:34:51
WPF本地化是将应用程序资源转换为支持该应用程序的特定区域性的本地化版本。
2021/3/19 上午10:28:09
继上一篇 《如果诸葛亮用C#写出师表...》后,站长想自己的第一语言是Java,虽然平时工作上用的不多,也用Java实现一遍吧,改改就是了
2021/3/19 上午9:59:57
看到一篇18年的文章 [C++版《出师表》],站长觉得挺有意思的,就用C# 控制台也实现了一遍
2021/3/15 上午11:57:53
在使用Flurl作为HttpClient向Server请求时,由于网络或者其它一些原因导致请求会有失败的情况
2021/2/18 下午4:16:23
最近,因为项目上需要设计实现一个权限管理模块,所以专门整理总结了RBAC的一些知识。
2021/2/17 上午9:28:39
有网友看了上一篇文章《C# 多语言利器 - ResX Manager》后,提出疑问:这个多语言切换不重启不能刷新,有没有方案?
2021/2/16 下午10:23:32
本文不是要介绍怎样实现项目国际化,主要是介绍一款`VS`扩展程序,可方便的管理通用的资源文件(*.resx)
2021/2/1 下午5:16:34
C/S客户端开发完成,需要将程序交付给用户,直接压缩发给用户是可以的(只是有点不专业),如果能有一个比较好看的安装界面,那档次就不一样了。
2021/1/7 上午10:53:07
一般客户端项目常规操作流程是:弹出登录窗口=》账号验证成功=》关闭登录窗口=》弹出主窗口=》在主窗口作业。