Допустим, у нас есть класс со свойством 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
}