首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 C# 9 的records作为强类型ID - 路由和查询参数

上一篇文章,我介绍了使用 C# 9 的record类型作为强类型id,非常简洁 public record ProductId(int Value); 但是在强类型id真正可用之前,还有一些问题需要解决...,比如,ASP.NET Core并不知道如何在路由参数或查询字符串参数中正确的处理它们,在这篇文章中,我将展示如何解决这个问题。...路由和查询字符串参数的模型绑定 假设我们有一个这样的实体: public record ProductId(int Value); public class Product { public...的参数转换为ProductId,由于它不是int,是我们定义的强类型ID,并且没有关联的类型转换器。...; } } 到这里,我们可以直接删除之前的 ProductIdConvert, 现在有一个通用的可以使用,现在.NET Core 的路由匹配已经没有问题了,接下来的文章,我会介绍如何处理在JSON

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用jquery获取url及url参数的方法

    使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1、jquery获取url很简单,代码如下: 其实只是用到了javascript的基础的window对象,并没有用jquery...2、jquery获取url参数比较复杂,要用到正则表达式,所以学好javascript正则式多么重要的事情 首先看看单纯的通过javascript是如何来获取url中的某个参数: //获取url中的参数...= null) return unescape(r[2]); return null; //返回参数值 } 通过这个函数传递url中的参数名就可以获取到参数的值,比如url为 http:...= null) return unescape(r[2]); return null; //返回参数值 } 今天在用上面的方法获取url中的参数时,url中传递的中文参数在解析的时候无论怎么测试...经过一番调试后发现,我再传递参数时,对汉字编码使用的是 encodeURI ,而上面的方法在解析参数编码时使用的是unescape ,修改为 decodeURI 就可以了。

    1.5K60

    使用 C# 9 的records作为强类型ID - 初次使用

    强类型ID 实体通常是整数,GUID或者string类型,因为数据库直接支持这些类型,但是,如果实体的ID的类型是一样的,比如都是整数的ID,这有可能会出现ID值传错的问题,看下边的示例。.... // 这个地方,参数传错了 AddProductToOrder(productId, orderId, int count); 上面的代码可以很好地通过检查并编译,但是在运行的时候就出问题了,这是逻辑...幸运的是,可以定义强类型id来解决这个问题,这个想法很简单,为每个实体的ID声明一个特定的类型,现在需要这样写: // 使用强类型ID代替整数ID public void AddProductToOrder...a.Equals(b); } 上面的代码没什么难的,但是如果每个实体都需要的话,那确实有点麻烦,在C# 9 可以使用source generators来完成这些,但是C# 9还引入了另一个功能,使用起来更方便...现在为模型中的每个实体编写一个强类型的id是不是很简单,使用Record 非常方便,当然,还有其他问题需要考虑,例如JSON序列化,与Entity Framework Core一起使用等,但这是另一篇文章的故事

    54820

    Yii2工作中的一些方法技巧

    作为自己的周总结,平时遇到的问题,以及一不小心踩的坑,记录下来自己当复习: 表单验证 表单验证,两个参数中至少需要一个(2个以上): public function rules() {...获取url中的host信息: # http://localhost Yii::$app->request->getHostInfo() 获取url中的路径信息(不包含host和参数): Yii...r=news&id=1 Yii::$app->request->url 或者 Yii::$app->request->requestUri 获取完整url(含host以及参数): Yii::$app...Yii::app()->request->url 只想获取url中的参数部分: # r=news&id=1 Yii::$app->getRequest()->queryString 获取某个参数的值...\helpers\VarDumper; // 使用 VarDumper::dump($var); // 使用2 第二个参数是数组的深度 第三个参数是是否显示代码高亮(默认不显示) VarDumper

    3.3K31

    yii2 restful 风格搭建(一)

    最近在研究 yii2 如何搭建 restful api,将心得写下,欢迎一起讨论 使用yii2.0.13 advanced 版,将 frontend 整个作为 api 接口项目,除了接口的路由规则可以认证通过外...,其他的路由规则都返回请求错误的格式 1、数据库结构 CREATE TABLE `goods` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,...//如果开启,表示只有配置在 rules 里的规则才有效 //由于项目会将一些 url 进行优化,所以这里需要设置为 true 'enableStrictParsing' => true...> ['v1/goods'], // 由于 resetful 风格规定 URL 保持格式一致并且始终使用复数形式 // 所以如果你的 controller...,此参数没用,url 地址必须是 users 'pluralize' => false, ], ], ], 8、去掉配置文件中的 errorHandler

    1.3K41

    java scanner构造函数_使用Scanner作为构造函数的参数的Java

    参考链接: Java Scanner仪类 这是一个学校任务的问题,这就是为什么我这样做的原因。...使用Scanner作为构造函数的参数的Java  总之,我在主要方法(Scanner stdin = new Scanner(System.in);是行)中使用Stdin制作扫描仪,从程序运行时指定的txt...这种扫描仪按预期工作为主,不过,我需要用它在具有扫描仪作为参数的自定义类:  public PhDCandidate(Scanner stdin)  {  name = stdin.nextLine()...+1  ”此时,Scanner的任何调用都将结束程序,不会抛出异常或错误。“究竟在什么时候?程序在哪里结束? –  +1  我不认为你的程序实际终止。我认为你的控制台正在等待输入。...–  +0  @ Code-Guru:只要我尝试使用扫描器(除了stdin.next(),所有其他方法都会中断),就会结束,所以立即尝试使用.nextLine() –

    2.8K30

    yii2 在控制器中验证请求参数的使用方法

    写api接口时一般会在控制器中简单验证参数的正确性。 使用yii只带验证器(因为比较熟悉)实现有两种方式(效果都不佳)。 针对每个请求单独写个Model , 定义验证规则并进行验证。...缺点:写好多参数验证的Model 类。 使用独立验证器 中提到的$validator- validateValue() 方法直接验证变量值。缺点:写实例化很多验证器对象。...有么有“一劳永逸”的做法,像在Model 中通过rules 方法定义验证规则并实现快速验证的呢?有!...从验证规则中获取可赋值的属性。 使用参数验证模型 进行验证和存储验证错误消息。 使用魔术方法获取参数验证模型 中的验证错误消息。 <?

    3.7K00

    微信小程序实践-- 服务器端接口restful配置

    RESTful 老沙计划使用 xgh.nai8.me/xcx 作为接口的基本地址,将来会有比如 GET xgh.nai8.me/xcx/albums GET xgh.nai8.me/xcx/albums...类似的url,这样是符合restful。 为了以后版本化,将每个版本的接口以模块的形式建立,当然建立支持restful和建立普通的模块并没有差别,使用gii的模块生成即可。...alt yii2框架内置是支持restful规范的,按照yii2的规则做我们可以轻松实现比如数据表数据的获取、插入、更新、删除等基础操作以及登录验证等功能。...对于一般的restful规则的yii2路由配置如下图 alt 红色框内的代表一个标准restful中控制器路由规则,绿色框内是你必须要填写的,其他的except、pluralize、extraPatterns...这里要说明的参数是pluralize,在restful使用上一直存在两种观点,就是对于资源在url上的表现应该是单数还是复数问题,yii2默认是复数形式,如果你想使用单数可以将pluralize设置为false

    3.2K70

    yii2开发后记

    2.添加独立模块 yii可以在modules文件夹中添加自定义模块,添加完成后在web.php中的$config中的'modules'=[id=..class=...]设置模块的开关。...规则设置 yii中对验证规则的定义,使用rules()方法可以一条定义多条规则,也可以根据不同的场景进行定义。外部验证时用$model->validate()方法来执行验证。...查询构建器 yii里的QUERY查询语句构造器非常简单好用,它可以用在模型和控制器中,虽然可能会造成模型与表不对应,但其构成接近sql语句,使用它可以轻易写出复杂的sql语句而不必严格遵从yii的内置规则...> 15.视图中块的使用 块内容在$this->beginBlock(['id'=>xxx])和$this->endBlock()之间定义,在layout中使用$view->block[id]来引用。...3.在JS中使用YII的变量 若想在JS中使用YII的URL变量等,可以使用html中的script标签,将变量在第一次渲染视图时预先解析出来,将下面代码放在需要使用变量的地方之前。

    3.2K50

    Yii2.0实现微信公众号后台开发

    ' => 'your token', ], ]; 2.在app/config/main.php中配置路由 因为接口模块使用的RESTful API,所以需要定义路由规则。...参数 根据微信公众平台开发者文档: 所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android...微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。...即: wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,...; //微信支付参数 $appid = Yii::$app->params['wechat']['appid']; $mchid = Yii::$app-

    92831

    Yii使用技巧大汇总

    url,然后在在applyOrder时应用这些参数修改$criteria,得到相应的查寻结果 如何生成并验证验证码: 基本用法 复制代码 代码如下: 的名子'), CStatePersister是yii的核心组件,提供了基于文件的数据保存方式,可以不在同的请求中使用 COutputCache 即是一个组件,又是一个filter,前者的时候用于在...复制代码 代码如下: '模式'=>'route' matchValue是指,对于一个url规则,正常情况下是只看参数的名子是否一样就应用规则 如果matchValue=true,则也要看值 如,规则...'id'=>'abcd')); 可以应用以上规则的, 如果规则中的matchValue=true,则就不能应用了 XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。...前者可以通过把最后一个参数设置成true完成一样的功能 addInCondition 不用考虑数组是空的情况yii会自动处理 如何得到当前url?

    2.4K31
    领券