如何处理ASP.Net Core MVC模型中的单位转换属性?

时间:2018-06-18 22:09:42

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

我们假设你有一个这样的模型属性:

[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的标准C​​reate视图),但不在Edit上。编辑表单显示正确的初始值,但是当我覆盖它并单击"保存"时,两个字段现在都是0.这就像编辑没有看到对NotMapped的更改元素,但Create动作确实。

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

1 个答案:

答案 0 :(得分:0)

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

仍然想知道是否有更优雅的方法可以做到这一点,但现在看来它正在起作用。