Asp.net core blazore webassembly 之 组件

关于组件 现在前端几大轮子全面组件化。组件让我们可以对常用的功能进行封装,以便复用。组件这东西对于搞.NET的同学其实并不陌生,以前ASP.NET WebForm的用户控件其实也是一种组件。它封装html代码,封装业务逻辑,对外提供属性事件等信息,它完完全全就是个组件,只是用户控件跑在服务端,而现在的组件大多数直接跑在前端。现在Blazor Webassembly微软正式把组件带到前端,让我们看看它是怎么玩的。 第一个组件 废话不多说下面开始构建第一个组件。这个组件很简单就是绿色的面板加一个标题的容器,我们就叫它GreenPanel吧。 新建Blazor Webassembly项目 前几天的build大会,Blazor Webassembly已经正式release了。我们更新最新版的Core SDK就会安装正式版的模板。 新建项目选Blazor Webassembly App项目模板 新建GreenPanel组件 在pages命令下新建一个文件夹叫做components,在文件夹下新建一个razor组件,命名为GreenPanel.razor。 注意:组件的命名必须大写字母开头 [Read More]

Asp.net core 对controller进行单元测试

单元测试对我们的代码质量非常重要。很多同学都会对业务逻辑或者工具方法写测试用例,但是往往忽略了对Controller层写单元测试。我所在的公司没见过一个对Controller写过测试的。今天来演示下如果对Controller进行单元测试。以下内容默认您对单元测试有所了解,比如如何mock一个接口。在这里多叨叨一句,面向接口的好处,除了能够快速的替换实现类(其实大部分接口不会有多个实现),最大的好处就是可以进行mock,可以进行单元测试。 测试Action 下面的Action非常简单,非常常见的一种代码。根据用户id去获取用户信息然后展示出来。下面看看如何对这个Action进行测试。 ``` public class UserController : Controller { private readonly IUserService _userService; public UserController(IUserService userService) { _userService = userService; } [Read More]

ASP.NET Core Blazor 初探之 Blazor WebAssembly

最近Blazor热度很高,传说马上就要发布正式版了,做为微软脑残粉,赶紧也来凑个热闹,学习一下。 Blazor Blazor是微软在ASP.NET Core框架下开发的一种全新的Web开发框架。Blazor利用WebAssembly使得开发者可以抛开JavaScript而使用优雅的C#来开发web单页应用。微软利用WebAssembly在浏览器里实现了一个.NET Runtime,任何.NET STANDARD 2.1的代码都可以在浏览器上运行,真的是屌炸了。Blazor强化了Razor模板引擎,并且借鉴了当前热门前端框架的优点,比如双向绑定技术,组件化,使前端开发敏捷高效。如果你对NG,VUE等框架熟悉那么很容易找到其中的共通点。 [Read More]

ASP.NET Core 如何获取请求参数

一次HTTP请求,就是一次标准IO操作。请求是I,是输入;响应式O,是输出。任何web开发框架,其实都是在干这两件事: 接受请求并进行解析获取参数 根据参数进行渲染并输出响应内容 ## 所以我们学习一个框架,我认为最首要的是知道如何从请求中获取参数。http请求携带参数的地方主要有下面几个地方: URL Header Body 下面看看ASP.NET Core是如何从这几个位置获取参数的。 通过URL获取参数 通过URL传参是HTTP最最常用的办法。这里简单介绍下URL相关的知识。一个URL主要分成4个部分,以http://localhost:5000/fromurl/test?name=mjzhou&age=10为例: | | | | —- | —- | | http:// | 协议 | | localhost:5000 | 主机地址 | | /fromurl/test | PATH | | name=mjzhou&age=10 | QueryString | 我们通常使用PATH跟QueryString来传递参数。新建一个MVC项目,新建一个Controller名为FromUrlController,通过几个Action来演示如何从URL上获取参数。 通过QuerySting获取参数 Request.Query对象 // /fromurl/test?name=mjzhou public IActionResult Test() { var... [Read More]