将米转换为千米并在Viewmodel中格式化值

时间:2015-03-09 00:22:21

标签: c# asp.net-mvc viewmodel

我有Viewmodel:

public class PartnerSearchResultVM
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Latitude { get; set; }
    public string Longitude { get; set; }
    public double Distance { get; set; }
    public string Classification { get; set; }
}

我从数据库得到距离,如下所示:2354,58764478263 m

我想呈现2.35公里

如何更改Viewmodel以进行转换(如果它是最佳位置)

1 个答案:

答案 0 :(得分:8)

我会为你的模型添加一个只读属性。

public double Kilometers { get { return this.Distance / 1000; } }

如果你想要一个格式化的字符串,我会创建第二个只读属性。

public string KilometerDisplay { 
    get { 
        return String.Format("{0:0.00}km", this.Kilometers); 
    } 
}

虽然根据您的使用情况,通用格式函数可能是合适的。也许作为一种扩展方法:

[Extension]
public string FormatDistance(this double distance) {
    return distance.FormatDistance("");
}

[Extension]
public string FormatDistance(this double distance, string unitString) {
    return return String.Format("{0:0.00}{1}", distance, unitString);
}
// for meters:   result.Distance.FormatDistance("m");
// for kilometers:  result.Kilometers.FormatDistance("km");

然后将一些XML文档添加到Distance属性,解释它是以米为单位。