двойные значения в модели - PullRequest
1 голос
/ 12 декабря 2011

У меня сложная модель с двойными значениями ... У меня проблема с передачей их в объект.Когда я передаю целочисленные значения (например, 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");
    }

В представлении Iиспользование:

@Html.EditorFor(model => model.Coordinates.Latitude)
@Html.EditorFor(model => model.Coordinates.Longitude)

1 Ответ

2 голосов
/ 12 декабря 2011

Привязка модели по умолчанию использует текущий параметр культуры при анализе значений запроса в свойствах вашей модели. Так, например, если у вас установлена ​​культура auto, она будет использовать браузер клиента (Accept-Language заголовок HTTP-запроса). И если у вас есть клиент из Франции (fr-FR) и он вводит 4.3 в поле ввода, связыватель модели по умолчанию не сможет проанализировать его обратно в двойное число, потому что во Франции они используют , в качестве десятичного разделителя не ..

Таким образом, вы можете установить для культуры в файле web.config фиксированное значение:

<globalization culture="en-US" uiCulture="en-US" />

Или, если вам нужно поддерживать несколько сценариев и культур, вы также можете написать пользовательский механизм связывания моделей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...