Обновление значения провайдера до TryUpdateModel - PullRequest
4 голосов
/ 23 августа 2010

Допустим, у нас есть класс со свойством PetsName.Если на экране это поле будет пустым, я хочу обновить провайдера значений, поэтому, если пользователь не вводит имя питомца, мы вводим «безымянный».Это не фактический сценарий ... это, конечно, пример, поэтому ответы типа "просто установите значения по умолчанию на веб-странице и т. Д." Не будут соответствовать этому сценарию:)

Основная проблема в том, что мы хотимчтобы обновить значения, чтобы при обновлении модели она использовала все, что вы переопределили.Я думаю, одна идея состоит в том, чтобы удалить значение и добавить его.Когда я проверяю ModelState, он имеет обновленное значение, однако, когда я вызываю TryUpdateModel, значение не обновляется.Возможно, то, что я делаю ниже, действительно правильно, и здесь есть еще одна проблема, но я решил, что сначала попробую.Спасибо!

</p> <pre><code> //Sample case: [HttpPost] public ActionResult Edit(PetOwner petOwner) { //If pets name is not set, force to "Unknown" if(petOwner.PetsName=="") { //Tried this too ModelState.Remove("PetsName"); //ModelState.Add("PetsName", new ModelState()); ModelState["PetsName"].Value = new ValueProviderResult("Unnamed", "Unnamed", CultureInfo.CurrentCulture); } //Get the record/relationships from DB to merge with ModelState PetOwner petOwnerToSave = from o in ctx.PetOwners where o.PetOwnerId == petOwner.PetOwnerId select o; TryUpdateModel(petOwnerToSave); //Save petOwnerToSave }

1 Ответ

4 голосов
/ 09 сентября 2010

Реальная проблема за кулисами здесь заключается в том, что Html.HiddenFor не отображал правильное значение, хотя TryUpdateModel обновлял значение в модели, чтобы дать представлению.

Проблема в том, чтоHtml-помощники предполагают, что если вы отображаете представление после публикации, то должна быть ошибка (в противном случае вы бы перенаправили обратно на представление методом GET - отсюда проблема получения переадресации сообщения)

Это подробно описанов: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

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