代码之家  ›  专栏  ›  技术社区  ›  CMPalmer

如何处理ASP.NET核心MVC模型中的单位转换属性?

  •  0
  • CMPalmer  · 技术社区  · 6 年前

    假设您有这样一个模型属性:

    [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时正确返回lengthemeters),并且正在处理create表单(来自asp.net core mvc的标准create视图),但是没有处理编辑。编辑表单显示正确的初始值,但是当我覆盖它并单击“保存”时,两个字段现在都是0。就像编辑没有看到对notmapped元素的更改,但是create操作看到了。

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   CMPalmer    6 年前

    从控制器中的编辑方法的绑定命令中省略了“长度计”。如果装订得当,这项技术似乎效果不错。

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