Допустим, у нас есть класс с свойством PetsName. Если он оставлен пустым на экране, я хочу обновить поставщика значений, поэтому, если пользователь не вводит имя любимца, мы вынуждаем «неназванный». Это не фактический сценарий .. это, конечно, образец, поэтому ответы, такие как «просто заданные значения по умолчанию на веб-странице и т. Д.», Не будут соответствовать этому сценарию:)Обновление поставщика стоимости до TryUpdateModel
Основная проблема заключается в том, что мы хотим обновить значения, поэтому, когда вы обновляете модель, она будет использовать все, что вы переопределили. Я предполагаю, что одна идея - удалить значение и добавить его. Когда я проверяю ModelState, он имеет обновленное значение, однако, когда я вызываю TryUpdateModel, значение не обновляется. Его возможное то, что я делаю ниже, действительно правильно, и здесь есть еще одна проблема, но я решил, что сначала попробую. Благодаря!
//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
}
И "в деталях" вы имеете в виду в обход Post-Redirect-Get предположение помощникам с помощью 'ModelState.Clear();'. Большое вам спасибо за эту ссылку, у меня действительно возникли проблемы с выяснением, почему я получал ошибки после сообщения ajax. Ваш другой совет (здесь: http://stackoverflow.com/a/5906396/1026459) действительно хорошо сочетается с этим тем, что он показывает, как правильно получить разметку проверки в частичных представлениях с помощью '@ {if (ViewContext.FormContext == null) {ViewContext.FormContext = new FormContext();} '. Благодаря! :) –