模型中的双重值

时间:2011-12-12 07:13:50

标签: asp.net asp.net-mvc-3

我有复杂的模型有双值...我有问题将它们传递给对象。当我传递整数值(如4或5)时,一切正常,但是当我在调试期间尝试传递double值(如4.3或-23.3)时,我看到该模型有0.0。

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)

1 个答案:

答案 0 :(得分:2)

默认模型绑定器在将请求值解析为模型属性时使用当前区域性设置。因此,例如,如果您将文化设置为auto,那么它将使用客户端浏览器(Accept-Language HTTP请求标头)。如果您有来自法国的客户(fr-FR)并且他在输入字段中输入4.3,则默认模型绑定器将无法将其解析为double,因为在法国他们使用{{ 1}}小数分隔符不是,

因此,您可以将web.config中的文化设置为某个固定值:

.

或者,如果您需要支持多种场景和文化,您还可以编写自定义模型绑定器。