Pregunta

Tengo una Acción como esta:

Update([Bind(Prefix = "CurrentModel")] dynamic edited)

pero cuando uso dinámico de la ModelState.IsValid siempre devuelve true, por lo que parece que no hay validación en el objeto dinámico?Si no, ¿cómo puedo solucionar esto?

¿Fue útil?

Solución

Hay dos casos:

  1. Usted está utilizando la vista de los modelos como argumentos de acción en el que caso de que el defecto cuaderno de modelo asigna automáticamente las propiedades y los conjuntos de posibles errores en el modelo de estado:

    public ActionResult Update([Bind(Prefix = "CurrentModel")] EditViewModel edited)
    {
        if (ModelState.IsValid)
        {
    
        }
        ...
    }
    
  2. Estás utilizando algún punto débil de escribir, ya sea con dynamic o FormCollection en caso de que el defecto cuaderno de modelo no se dispara y no se realiza ninguna validación, ya que no es capaz de inferir su real tipo de modelo.En este caso, usted necesita para llamar manualmente TryUpdateModel y de indicar su tipo de modelo:

    public ActionResult Update(dynamic edited)
    {
        var model = new MyViewModel();
        if (!TryUpdateModel(model, "CurrentModel"))
        {
            // The model was not valid
        }
        ...
    }
    

Conclusión:el uso de dynamic como argumento de acción en un controlador de acción hace muy poco sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top