Új hozzászólás Aktív témák

  • joysefke

    veterán

    .NET Core 2 MVC - model validálás, miért nem megy?

    Sziasztok!

    Szeretném a (működő) model validálást kiszervezni a kontrollerből egy külső osztályba. Létrehoztam egy : Attribute, IModelValidator interfészeket megvalósító validátor attributum-osztályt, a nevével dekoráltam az action method megfelelő paraméterét, mégis semmi nem utal arra, hogy valaha, bármilyen körülmények között eljutna a végrehajtás az én általam definiált IModelValidator.Validate() metódushoz. Sem a breakpoint sem a Validate függvényben levő exception nem aktiválódik. A file paraméter Validated bejegyzést rak a ModelState-be akkor is amikor nem kéne

    Részletek:

    [HttpPost]
    public IActionResult EditPerson(Person model, int id, [ImageValidator]IFormFile file)

    Itt a file-t kellene validálni.

    Itt a validátor:
    public class ImageValidatorAttribute : Attribute, IModelValidator
    {
    public bool IsRequired => true;

    // Max size of image in KB
    public int MaxSize { get; set; } = 1024;
    // Allowed extensions
    public string Extensions { get; set; } = ".jpg .jpeg";

    public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context)
    {
    throw new NotImplementedException();
    IFormFile file = context.Model as IFormFile;
    List<ModelValidationResult> result = new List<ModelValidationResult>();

    if (file != null) {

    .....
    ....
    }
    return result;
    }
    }

    A kontrolleren beül így néz ki a file paraméter-kezelése:
    if (ModelState.GetValidationState(nameof(file)) == Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid)
    {....}

    Ez mindig igaz...

    Elmulasztottam valamit? Kell esetleg regisztrálni valahol a validátort?

Új hozzászólás Aktív témák