Asp.net 模型中的双重值
我有一个具有双值的复杂模型…我在将它们传递到对象时遇到问题。当我传递整数值(如4或5)时,一切都正常,但当我在调试期间尝试传递双精度值(如4.3或-23.3)时,我看到模型的值为0.0Asp.net 模型中的双重值,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我有一个具有双值的复杂模型…我在将它们传递到对象时遇到问题。当我传递整数值(如4或5)时,一切都正常,但当我在调试期间尝试传递双精度值(如4.3或-23.3)时,我看到模型的值为0.0 public class Coordinates { public int ID { get; set; } [Required] public double Latitude { get; set; } [Required] public double Longitu
public class Coordinates
{
public int ID { get; set; }
[Required]
public double Latitude { get; set; }
[Required]
public double Longitude { get; set; }
}
[HttpPost]
public ActionResult Edit(Place place)
{
var updatedPlace = db.Place.Include(c => c.Country).Include(c => c.Coordinates).Where(p => p.ID == place.ID).SingleOrDefault();
updatedPlace.Coordinates.Latitude = place.Coordinates.Latitude;
updatedPlace.Coordinates.Longitude = place.Coordinates.Longitude;
updatedPlace.Country = db.Country.Find(place.Country.ID);
updatedPlace.Description = place.Description;
updatedPlace.Name = place.Name;
db.Entry(updatedPlace).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
鉴于此,我使用:
@Html.EditorFor(model => model.Coordinates.Latitude)
@Html.EditorFor(model => model.Coordinates.Longitude)
将请求值解析为模型属性时,默认模型绑定器使用当前区域性设置。例如,如果您将区域性设置为
auto
,那么它将使用客户端浏览器的区域性(Accept Language
HTTP请求头)。如果您有一个来自法国的客户(fr-fr
),并且他在输入字段中输入了4.3
,默认的model binder将无法将其解析回double,因为在法国,他们使用,
作为十进制分隔符,而不是
因此,您可以将web.config中的区域性设置为某个固定值:
<globalization culture="en-US" uiCulture="en-US" />
或者,如果需要支持多个场景和区域性,也可以编写自定义模型绑定器