如何在路由绑定中使用 IParsable
IParsable 是 .Net 7 中新增的接口,它可以将字符串转换为对应的实体。在 Controller 的 Route 绑定中可以使用 IParsable 来绑定复杂的实体。
实验背景
假设有一个需要将 route "report/{month}-{day}" 绑定到 MyDate 对象上的场景。
在 .Net 7 之前,通常是使用两个参数来接收绑定的 month 和 day,然后在代码中实例化 MyDate 对象。例如:
[Route("report/{month}-{day}")] public ActionResult GetReport(int month, int day) { var myDate = new MyDate { Month = month, Day = day }; // 使用 myDate }
使用 IParsable
在 .Net 7 中,可以直接让 MyDate 实现 IParsable 接口,然后在 route 中绑定 "report/{myDate}"。这样 MyDate 就能直接从 route 上绑定,省去了手动实例化的步骤。
下面是一个示例代码:
public class MyDate : IParsable<MyDate> { public int Month { get; set; } public int Day { get; set; } public void Parse(string input) { var parts = input.Split('-'); Month = int.Parse(parts[0]); Day = int.Parse(parts[1]); } public static MyDate Parse(string s, IFormatProvider? provider) { var date = new MyDate(); date.Parse(s); return date; } public static bool TryParse(string? s, IFormatProvider? provider, out MyDate result) { try { result = Parse(s, provider); return true; } catch { result = default; return false; } } } [HttpGet("report/{myDate}")] public ActionResult GetReport(MyDate myDate) { // myDate 已经被正确地绑定 }
参考资料
- IParsable[1]
- 5 new MVC features in .NET 7[2]
本文采用 Chat OpenAI 辅助注水浇筑而成,如有雷同,完全有可能。
- 本文作者: newbe36524
- 本文链接: https://www.newbe.pro/ChatAI/How-to-use-IParsable-in-route-binding/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
参考资料
[1]IParsable: https://learn.microsoft.com/en-us/dotnet/api/system.iparsable-1?view=net-7.0&WT.mc_id=DX-MVP-5003606
[2]5 new MVC features in .NET 7: https://andrewlock.net/5-new-mvc-features-in-dotnet-7/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了