Actualmente estoy usando el ModelStateDictionary en asp.net mvc para contener los errores de validación y luego lo devuelvo al usuario. Poder verificar si todo el modelo es válido con ModelState.IsValid es particularmente importante. Sin embargo, una aplicación actual en la que estoy trabajando tiene la necesidad de poder informar advertencias. Estos no son tan críticos, por lo que el contenido del formulario aún se puede guardar, pero se deben mostrar al usuario para que se pueda tomar una acción de forma opcional.Advertencias de modelo en ASP.NET MVC
He estado buscando a través del framework para ver si hay algún lugar obvio para extenderlo y permitirme hacer esto. Estoy pensando que otro diccionario con advertencias y una subclase de error de modelo llamado modelo de advertencia. Sin embargo, no estoy seguro de cómo conseguiría que el framework use mis nuevas clases de contenedor en la vista, etc., aún quiero que todo el error existente funcione.
Si alguien ha intentado algo similar o tiene algún pensamiento agradecería su opinión.
Actualización:
Tengo por lo que se extiende la ViewDataDictionary añadir algunas advertencias
public class AetherViewDataDictionary : ViewDataDictionary
{
public AetherViewDataDictionary()
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(object model) : base(model)
{
ModelStateWarning = new ModelStateDictionary();
}
public AetherViewDataDictionary(ViewDataDictionary viewDataDictionary) : base(viewDataDictionary)
{
ModelStateWarning = new ModelStateDictionary();
}
public ModelStateDictionary ModelStateWarning { get; private set; }
}
El problema que estoy teniendo ahora es que cuando llego a mi código de la vista, esta es solo para la depuración, estoy perdiendo el hecho de que es mi nuevo tipo, así que cuando intento devolverlo y obtener acceso a mi nuevo diccionario, no me agrada.
public partial class Index : ViewPage<PageViewData>
{
protected override void SetViewData(ViewDataDictionary viewData)
{
base.SetViewData(viewData);
}
}
Lo establece correctamente aquí, pero cuando compruebo el tipo se ha ido.
Editar: Esto resultó ser una manera tonta de hacer las cosas, ver respuesta a continuación.
¿Qué es AttemptedValue? –
También "if (aState == null) return true;" la línea es incorrecta Deberíamos devolver verdadero si y solo si la colección relacionada tiene al menos un artículo. Por lo tanto, debe eliminar esta línea y cambiar la siguiente línea a "return (aState! = Null && aState.Warnings.Count> 0);" –