【发布时间】:2018-11-27 19:27:00
【问题描述】:
假设你有一个这样的模型属性:
[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 操作看到了。
有没有更优雅的方式来处理这些类型的转换?
【问题讨论】:
-
您确定绑定到 LengthMeters 的模型确实有效吗?您可以发布您的视图模型和控制器操作方法代码。看起来从编辑表单设置的值始终为零。但我不明白为什么你只需要设置 LengthFt 来计算 LengthMeters 时还要设置 LengthMeters。
-
我们有一个完整的计算库,可以接受以 SCFH(标准立方英尺/小时)为单位的值,而客户决定他们总是希望以 MCFH(每小时千立方英尺)的形式输入并查看结果)。所以它只是一个除/乘一千,但在代码方面,将所有其他模型引用(和数据库条目)留在 SCFH 中但在 UI 级别进行翻译更容易。但是编辑的约束性问题让我怀疑我的推理是否存在缺陷。
标签: asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-mvc-2.0