asp.net-core - 如何处理 ASP.Net Core MVC 模型中的单位转换属性?
问题描述
假设您有这样的模型属性:
[Display(Name = "Length (ft)"]
public double LengthFt {get; set;}
现在您想要另一个长度以米为单位的属性,将在您的输入和输出表单中使用:
[Display(Name = "Length (m)"]
[NotMapped]
public double LengthMeters
{
get => LengthFt * 0.3048;
set => LengthFt = value / 0.2048;
}
这应该工作吗?我的(比这更复杂的例子)正在处理“get”部分(在设置 LengthFt 时正确返回 LengthMeters),并且正在处理 Create 表单(来自 ASP.Net Core MVC 的标准 Create 视图),但是不适用于编辑。Edit 表单显示了正确的初始值,但是当我覆盖它并单击“Save”时,两个字段现在都是 0。这就像 Edit 没有看到 NotMapped 元素的更改,但 Create 操作却看到了。
有没有更优雅的方式来处理这些类型的转换?
解决方案
控制器中 Edit 方法的 Bind 命令中省略了“LengthMeters”。正确绑定后,此技术似乎可以正常工作。
仍然想知道是否有更优雅的方式来做到这一点,但它现在似乎正在工作。
推荐阅读
- r - 通过从数据表中选择另一个页面来更新绘图
- node.js - 带有 NodeJS 的用户名/密码的 TLS
- javascript - TypeError: firebase.initializeApp 不是仅当 jest 运行测试时的函数
- ios - UIPageViewController 在 viewDidLoad() 之后加载 ViewController 的延迟
- java - 二进制文件的十六进制表示
- python - AWS EC2 连续一个月运行 python 程序
- typescript - 从 Webstorm 中的 docker 容器远程调试 koa 应用程序(Typescript)
- ios - Flutter 在执行 Flutter build ios 后卡在 Building Dart 代码上
- html - 如何仅使用 html 或 css 为音频制作切换按钮?
- shopify - 如何删除单词之间的空格 Liquid-C (Shopify)