Не могу обновить ModelState после его изменения - PullRequest
0 голосов
/ 30 мая 2018

У меня точно такая же проблема, описанная в этом вопросе.Мой взгляд не предоставляет некоторые данные в моем контроллере.поэтому в контроллере перед проверкой ModelState я переназначаю это значение вручную.затем, когда я пытаюсь обновить ModelState, он показывает ошибку 'The model of type /*my model*/ could not be updated.'

Вот контроллер:

public ActionResult CreateEntry(NewEntryViewModel model)
{
    model.SexList = new SelectList(_newEntryService.GetSexList(), "Key", "Value");
    model.DoctorList = new SelectList(_refDocService.GetDocList(), "Key", "Value");
    model.TestList = _testService.GetAllTests();
    model.Patient.Serial = _newEntryService.GenerateSerial();

    //ModelState["TestList"].Errors.Clear();
    //ModelState.Remove("TestList");
    UpdateModel(model);  //error shows here

    var errors = ModelState
        .Where(x => x.Value.Errors.Count > 0)
        .Select(x => new { x.Key, x.Value.Errors })
        .ToArray();

    if (!ModelState.IsValid)
    {
        //do something
        return View("NewEntry", model);
    }
    return RedirectToAction("NewEntry");
}

Я пробовал с этими закомментированными строками, каждая из которых сразу.но ошибка все еще показывает.Вот решение, которое я нашел в вопросе, приведенном сверху.так как мне это решить?Кстати, TestList - это просто IEnumerable класса домена, например public IEnumerable<Admin_Test> TestList { get; set; }

1 Ответ

0 голосов
/ 30 мая 2018

так что я наконец нашел решение, но я не рекомендую его.мне не нужно обновлять состояние модели, мне просто нужно удалить ошибку из словаря модели состояния.поэтому я использовал только ModelState.Remove("TestList");.я сделал это, потому что TestList не является частью какого-либо класса домена, который должен быть проверен.я не использовал @Html.DropDownListFor для TestList, и у него нет [Required] или каких-либо других типов атрибутов внутри класса ViewModel.Я использовал только атрибуты в моих классах домена.поэтому я даже не знаю, почему TestList отображает атрибуты data-val в представлении (что, возможно, приводит к тому, что ModelState пытается его проверить).как я был уверен, я принудительно удалил только эту проверку из словаря ModelState.

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