C# 将米转换为公里,并在Viewmodel中设置值格式
我有Viewmodel:C# 将米转换为公里,并在Viewmodel中设置值格式,c#,asp.net-mvc,viewmodel,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; } pub
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; }
}
我从数据库中得到的距离以米为单位,如下所示:235458764478263米
我想介绍2.35公里
如何更改Viewmodel以在那里进行转换(如果它是进行转换的最佳位置)我将为您的模型添加只读属性
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文档,解释它是以米为单位的。米中的
,
是错误还是实际切换了区域设置和距离转换?而不是双精度,我将使用一个字符串并返回2.35km作为字符串,因为Distance属性已经存储了确切的值,并且在这个上下文中OP希望格式化输出。但是图案很好!嗨,丹,谢谢。您如何将该格式应用于#.##?您更喜欢String.format还是DataAnnotation?如果不熟悉您的项目,很难回答这个问题。选择最适合您情况的技术。@Dan-o出于好奇,您为什么要在扩展方法中添加ExtensionAttribute
?该属性在C#中是多余的,因为编译器会自动修饰这些方法。