Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 模型中的双重值_Asp.net_Asp.net Mvc 3 - Fatal编程技术网

Asp.net 模型中的双重值

Asp.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

我有一个具有双值的复杂模型…我在将它们传递到对象时遇到问题。当我传递整数值(如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 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" />

或者,如果需要支持多个场景和区域性,也可以编写自定义模型绑定器