我有复杂的模型有双值...我有问题将它们传递给对象。当我传递整数值(如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)
答案 0 :(得分:2)
默认模型绑定器在将请求值解析为模型属性时使用当前区域性设置。因此,例如,如果您将文化设置为auto
,那么它将使用客户端浏览器(Accept-Language
HTTP请求标头)。如果您有来自法国的客户(fr-FR
)并且他在输入字段中输入4.3
,则默认模型绑定器将无法将其解析为double,因为在法国他们使用{{ 1}}小数分隔符不是,
。
因此,您可以将web.config中的文化设置为某个固定值:
.
或者,如果您需要支持多种场景和文化,您还可以编写自定义模型绑定器。