首页 > 解决方案 > 如何处理 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 操作却看到了。

有没有更优雅的方式来处理这些类型的转换?

标签: asp.net-coreasp.net-core-mvcasp.net-core-2.0asp.net-core-mvc-2.0

解决方案


控制器中 Edit 方法的 Bind 命令中省略了“LengthMeters”。正确绑定后,此技术似乎可以正常工作。

仍然想知道是否有更优雅的方式来做到这一点,但它现在似乎正在工作。


推荐阅读