如何在 ASP.Net 核心 MVC 模型中处理单位转换 属性?
How to handle a unit conversion property in ASP.Net Core MVC model?
假设您有一个这样的模型 属性:
[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"。正确绑定后,此技术似乎可以正常工作。
仍然想知道是否有更优雅的方法来执行此操作,但它现在似乎有效。
假设您有一个这样的模型 属性:
[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"。正确绑定后,此技术似乎可以正常工作。
仍然想知道是否有更优雅的方法来执行此操作,但它现在似乎有效。