В ASP.NET Core 2.2 Razor Pages я хочу провести повторную проверку модели после ее манипулирования, чтобы сделать ее согласованной. В частности, есть значения, которые я не хочу получать от пользователя или когда-либо отправлять пользователю, поэтому они не будут связаны с запросом, а будут добавлены при обработке запроса.
Проверка модели происходит до того, как я изменяю значения, и ModelState.IsValid()
возвращает false
.
Мне известно о TryValidateModel(object)
, но я не знаю, какой объект передать в него для повторной проверки всей модели для страницы Razor - поскольку я не использую MVC, в методе OnPost не передается объект модели. пользуюсь. Кажется, что ни в одной из документов не указано, что я должен передать, чтобы пройти повторную проверку, и я не смог найти никаких соответствующих документов для Core или Razor.
Мой код по сути:
[...]
public class IndexModel : PageModel
{
[BindProperty]
public NiceModelObject SomeModelObject { get; set; } // <=== object which needs to be manipulated
[BindProperty]
public AnotherModelObject ObjectThatIsOk { get; set; }
[BindProperty]
public FanciestModelObject AnotherObjectWhatIsJustPeachy { get; set; }
public ActionResult OnPost()
{
// manipulate model
SomeModelObject.Property = ValueIWantToSetItTo;
SomeModelObject.Property2 = ValueIWantToSetItTo2;
// Revalidate
ModelState.Clear();
TryValidateModel(/*What is the object that represents my entire model in Razor?*/); // <== don't know what to put here
if (ModelState.IsValid())
{
// Do Stuff, redirect
}
// Do other stuff, present page with error
}
[...]
}
Редактировать
Добавлены дополнительные элементы в код для уточнения;
- Мне известно о
TryValidateModel()
. Если я передам SomeModelObject
в него, он не будет работать должным образом, после очистки он будет содержать только 1 или 2 значения, а SomeModelObject
имеет как минимум 10 свойств.
- Я использую Razor, и в отличие от обычного MVC, метод OnPost не имеет объекта, представляющего модель в целом (, о котором я знаю ), поэтому я не могу передать его в
TryValidateModel()
.